【问题标题】:Laravel Eager Loading through an intermediate ModelLaravel Eager Loading 通过中间模型
【发布时间】:2014-11-06 01:17:54
【问题描述】:

在我的一个控制器中,我有以下内容:

return Lot::with(array('region', 'territory', 'manager')) -> get();

这很完美,并返回以下内容:

Array
(
[0] => stdClass Object
    (
        [id] => 1
        [region_id] => 3
        [territory_id] => 2
        [state_id] => 5
        [manager_id] => 2
        [lot_num] => 0
        [lot_type] => managed
        [name] => Some Name
        [address_1] => Some Address
        [address_2] => 
        [address_3] => 
        [city] => Some City
        [zip] => 00000
        [opened_at] => 
        [deleted_at] => 
        [created_at] => 2014-11-06 00:49:39
        [updated_at] => 2014-11-06 00:49:39
        [region] => stdClass Object
            (
                [id] => 3
                [name] => Corporate
                [deleted_at] => 
                [created_at] => 2014-11-06 00:49:39
                [updated_at] => 2014-11-06 00:49:39
            )

        [territory] => stdClass Object
            (
                [id] => 2
                [name] => Corporate
                [deleted_at] => 
                [created_at] => 2014-11-06 00:49:39
                [updated_at] => 2014-11-06 00:49:39
            )

        [manager] => stdClass Object
            (
                [id] => 2
                [email] => test@tester.com
                [active] => 1
                [last_login] => 
                [created_at] => 2014-11-06 00:49:39
                [updated_at] => 
                [deleted_at] => 
            )

    )

)

我在Lot类中的'manager'方法有如下关系:

return $this -> belongsTo('User');

我的 User 类上面有以下方法:

public function profile(){
    return $this -> hasOne('Profile');
}

现在,终于要问我的问题了:) 是否可以通过我在第一个代码片段中对 Lot 类执行的预加载来预加载该用户的配置文件?我想要完成的是让我的“经理”对象在返回中看起来像这样:

[manager] => stdClass Object
            (
                [id] => 2
                [email] => test@tester.com
                [active] => 1
                [last_login] => 
                [created_at] => 2014-11-06 00:49:39
                [updated_at] => 
                [deleted_at] => 
                [profile] => stdClass Object
                (
                    [id] => 5
                    [first_name] => Test
                    [last_name] => Tester
                    ...
                )
            )

【问题讨论】:

    标签: laravel model eager-loading


    【解决方案1】:

    eager load 嵌套关系使用“点”表示法:

    return Lot::with(array('region', 'territory', 'manager.profile'))->get();
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-05-29
      • 2020-11-11
      • 2020-07-10
      • 1970-01-01
      • 2021-10-17
      • 1970-01-01
      • 2017-09-17
      相关资源
      最近更新 更多