【发布时间】:2014-10-29 10:52:30
【问题描述】:
$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;
上面的代码只返回所有记录,没有条件应用于结果。我不确定出了什么问题。我想要的是在查询中为与父关联的子表添加条件,但将返回应用条件的父子数据
其他问题:
- 如何在预加载的嵌套条件中添加多个 OR 条件?
- 如何控制条件的优先级?假设我将有 2 或 3 个条件具有相同的优先级,并且在嵌套的急切加载条件中我将有另一个带有 AND 条件的条件
更新
这仍然记录所有数据,不应用任何条件。
$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。 从潜在客户,lead_detail_emails 中 Leads.id =lead_detail_emails.lead_id 和 (lead_detail_emails.email like '%john%' OR lead_detail_emails.email like '%james%');
【问题讨论】:
-
你应该添加一些你想要实现的例子/代码
-
我已经更新了我的问题。谢谢
-
请解释您想从数据库中获取的确切记录 - 现在您似乎想要获取包含 john 或 james 等电子邮件的leadsmodel 记录,并为他们获取也只有名称 john 或的相关模型电子邮件詹姆斯。
-
我想从潜在客户(电子邮件表的父级)获取记录,条件是搜索 john 或 james 电子邮件
-
@Ponce 您对查询的猜测是错误的,请查看我编辑的答案以了解详细信息。
标签: php laravel eloquent eager-loading query-builder