在Eloquent中使用活动加载从附加表中选择一些(不是全部)字段

时间:2014-09-23 11:24:08

标签: php mysql laravel eloquent

我有3个包含此类字段的表

1。反馈

  • ID
  • CUSTOMER_ID
  • 的region_id
  • 分数
  • 描述
  • created_at
  • 的updated_at
  • deleted_at

2。客户

  • ID
  • 名称
  • created_at
  • 的updated_at
  • deleted_at

3。区域

  • ID
  • 名称
  • created_at
  • 的updated_at
  • deleted_at

有这样的关系

1

public function Customer() 
{
    return $this->belongsTo('Customer');
}

2

public function Region()
{
    return $this->belongsTo('Region');
}

我试图运行此代码

$result = Feedback::
  with(array('customer' => function($query) {$query->select(array('id','name'));}))
->with(array('region' => function($query) {$query->select(array('id','name'));}))
->get(array('id','created_at'))
->toArray();

它返回给我下一个数组:

Array
(
[0] => Array
    (
        [id] => 4
        [created_at] => 2014-09-22 16:28:32
        [customer] => 
        [region] => 
    )

)

我们可以看到客户和地区字段为空。然后我尝试用任何其他组合修改我的代码,但它并没有给我带来好结果。只有当我在->get(array('id','created_at'))中没有指定字段并且像->get()那样将其保留为空时运行此构造时,我才能得到这样的结果:

Array
(
[0] => Array
    (           
        [id] => 1
        [customer_id] => 1
        [region_id] => 1
        [scores] => some_data
        [description] => some_text
        [created_at] => 2014-09-22 16:28:32
        [updated_at] => 2014-09-22 13:28:57
        [deleted_at] => 
        [customer] => Array
            (
                [id] => 1
                [name] => customer_name
            )

        [region] => Array
            (
                [id] => 1
                [name] => region_name
            )

    )

)

但是现在我从主表中得到了所有字段,在这种情况下我不需要。

请帮我正确地构建这个结构。谢谢!

0 个答案:

没有答案