$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;
Приведенный выше код возвращает только всю запись, и к результату не применяются никакие условия. Я не уверен, что не так. Я хочу добавить условия в запрос для дочерней таблицы, связанной с родительской, но вернут родительские и дочерние данные, где применяется условие
дополнительный вопрос:
- Как я могу добавить несколько условий ИЛИ во вложенное условие при нетерпеливой загрузке?
- как я могу контролировать приоритет условия? скажем, у меня будет 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, я думаю, это было бы
выберите Leads.,lead_detail_emails. from Leads, lead_detail_emails, где lead.id = lead_detail_emails.lead_id и (lead_detail_emails.email, например, «%john%» ИЛИ lead_detail_emails.email, например, «%james%»);