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 用土力学知识进行土坡稳定性分析与挡土墙设计
  • ¥70 PlayWright在Java上连接CDP关联本地Chrome启动失败,貌似是Windows端口转发问题
  • ¥15 帮我写一个c++工程
  • ¥30 Eclipse官网打不开,官网首页进不去,显示无法访问此页面,求解决方法
  • ¥15 关于smbclient 库的使用
  • ¥15 微信小程序协议怎么写
  • ¥15 c语言怎么用printf(“\b \b”)与getch()实现黑框里写入与删除?
  • ¥20 怎么用dlib库的算法识别小麦病虫害
  • ¥15 华为ensp模拟器中S5700交换机在配置过程中老是反复重启
  • ¥15 uniapp uview http 如何实现统一的请求异常信息提示?