我想在我的频道hasmany关系中过滤我选择的列,并使用where方法过滤它但无济于事。有什么想法吗?
$data['users'] = Users::with(array('Channels' => function($q){
$q->where('is_default','=', 1)->select(array('channel_name', 'channel_id'));
}))->get(array('id'));
但这完全正常。
$data['users'] = Users::with(array('Channels' => function($q){
$q->where('is_default','=', 1)
}))->get(array('id'));
我尝试先将select方法放在where方法仍然不起作用之前
修改 这些是执行的SQL查询,这实际上是我想要的,但它没有填满关系属性。
从created_at
id
=?中选择name
,referrer
,users
,status
限制10偏移0
从channel_name
中选择channel_id
,channels
,其中channels
。user_id
位于(?,?,?,?,?,?,?,? ,?,?)和is_default
=?
答案 0 :(得分:0)
你可以试试这个
$data['users'] = Users::with(array('Channels' => function($q){
$q->select('id, channel_name', 'user_id')->where('is_default','=', 1);
}))->get();
如果要在get()
中选择列,请确保为key
表选择关联的channels
,例如,假设user_id
是外键chennels table
所以你可以用这个来做:
$data['users'] = Users::with(array('Channels' => function($q){
$q->select('id, channel_name', 'user_id')->where('is_default','=', 1);
}))->get(array('id'));
如果您未在主查询中选择primary key
,在子查询中选择foreign key
,则with
将无效。在querys/select
中,相关的密钥都应该可用。