doumou3883 2016-04-14 01:06
浏览 43
已采纳

Angularjs + Laravel:在嵌套的ng-repeat中获取Eloquent Relationships的属性

What I'm trying to do is to get a property of the deepest hierarchy of Eloquent Relations in a nested ng-repeat.

Here is the relationship.

Order ..hasMany.. SubItems ..belongTo.. Product

There is a model Order, which hasMany model SubItems. This SubItems model belongsTo a model Product.

I have an array of Order, and I'd like to access the relevant Product with ng-repeat from the each Order object.

    <table>
        <tbody ng-repeat="order in tc.orders" >//I use "as" syntax, so I use "tc."here
            <tr ng-click="tc.showOrderDetail(order.id)">
                <td ng-bind="order.id"></td>
                <!-- "order.id" works in both lines -->
            </tr>
                <tr ng-repeat="subItem in order.subItems">
                    <td ng-bind="subItem.price"></td>
                    <!-- This "subItem.price" appears -->
                    <td ng-bind="subItem.product.name"></td>
                    <!-- This "subItem.product.name" doesn't appear -->
                </tr>
        </tbody>
    </table>

The second level of the relationship (SubItems) can be accessed by putting a ., but apparently I need to use a different way to access the third level (Product).

I'd appreciate if you'd give any advice.

Additional information

When I use Laravel's foreach loop, this can be accessed by...

{{$subItem->product->name}} //This works fine!

The controller method is...

public function getOrders()
{
    $orders = $this->order->with('customer', 'subitems')->orderBy('id', 'desc')->get();
    return $orders;
}
  • 写回答

1条回答 默认 最新

  • doumaoao0182 2016-04-14 13:57
    关注

    In your code you're not telling Laravel to eagerLoad the Project Model onto your Subitem Model. you need to add the Product eager loading like so :

    $this->order->with('customer', 'subitems.product')->orderBy('id', 'desc')->get();
    

    and access it like any other javascript object subItem.product.name

    The reason it worked for you in Laravel foreach loop was because when you request a relationship like an attribute in Laravel i.e $subItem->product and not as a method, Laravel automatically instantiate the relationship Eloquent object, into the Model object.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 微信公众号自制会员卡没有收款渠道啊
  • ¥15 stable diffusion
  • ¥100 Jenkins自动化部署—悬赏100元
  • ¥15 关于#python#的问题:求帮写python代码
  • ¥20 MATLAB画图图形出现上下震荡的线条
  • ¥15 关于#windows#的问题:怎么用WIN 11系统的电脑 克隆WIN NT3.51-4.0系统的硬盘
  • ¥15 perl MISA分析p3_in脚本出错
  • ¥15 k8s部署jupyterlab,jupyterlab保存不了文件
  • ¥15 ubuntu虚拟机打包apk错误
  • ¥199 rust编程架构设计的方案 有偿