Laravel渴望加载嵌套或条件
问题描述:
$query = LeadsModel::with(
array(
'emails' => function ($q) use ($inputs)
{
$q->orwhere('email','like',"%john%");
$q->orwhere('email','like',"%mark%");
}
)
)
->whereHas
(
'emails', function ($q) use ($inputs)
{
$q->orwhere('email','like',"%john%");
$q->orwhere('email','like','%mark%');
}
);
$res = $query->get();
display_output($res);
return;
上面的代码只返回所有记录,没有条件适用于结果。我不知道什么是错的。我想要的是添加条件的查询与父关联的子表,但将返回其中施加条件父子数据Laravel渴望加载嵌套或条件
另一个问题:
- 我如何可以添加多个OR条件嵌套在急切的加载条件?
- 我该如何控制条件的优先顺序?可以说我将有2个或3个条件相同的优先级,我将有一个嵌套的立即加载条件
更新
这仍然记录所有的数据与另一条件和使用条件,不应用条件。
$query = LeadsModel::with(
array(
'emails' => function ($q) use ($inputs)
{
$q->orWhere('email','like',"%john%");
$q->orWhere('email','like',"%james%");
}
)
)
->whereHas
(
'emails', function ($q) use ($inputs)
{
$q->where('email','like',"%john%")->orWhere('email','like','%james%');
}
);
$res = $query->get();
display_output($res);
return;
正常SQL
我想这将是
选择线索。 ,lead_detail_emails。 from lead,lead_detail_emails其中 leads.id = lead_detail_emails.lead_id和 (lead_detail_emails.email like'%john%'或lead_detail_emails.email like'%james%');
答
您需要嵌套其中:
whereHas('emails', function ($q)
{
$q->where(function ($q) {
$q->where('email','like',"%john%")
->orWhere('email','like','%mark%');
});
})
这是whereHas
与数据透视表例如查询(belongsToMany
):
select * from `table`
where `table`.`deleted_at` is null
and (select count(*) from `related_table` inner join `pivot_table` on `related_table`.`id` = `pivot_table`.`related_id`
where `pivot_table`.`user_id` = `table`.`id`
and (`some_field` like ? or `some_field` like ?)) >= 1
您应该添加一些例子/代码,你想要什么来实现 – 2014-10-29 11:03:50
我有更新了我的问题。谢谢 – Ponce 2014-10-29 11:06:44
请解释你想从数据库中得到什么记录 - 现在看来你想要得到像john或james这样的电子邮件的leadmodel记录,并为他们获取仅有名称john或james的相关模型电子邮件。 – 2014-10-29 13:02:31