我正在使用Laravel Eloquent来查询MySQL数据库。我有一个表base_node
和相关的表base_data
(OneToOne关系)。 base_data
。node_id
= base_node
。id
。查询如下
$result = BaseNode::with(['data' => function ($query) use ($filter_text) {
$query->where('head', 'like', '%'. $filter_text. '%');
}])->get()->toJSon();
查询结果[{'id': 1, ..., 'data': {'id': 1, ...}}, {'id': 2, ..., 'data': null}]
。
如您所见,如果base_data
。head
与过滤条件不匹配,则结果中的data
字段为空。如何构造有说服力的查询以完全从结果中排除这些行。例如,期望的结果是[{'id': 1, ..., 'data': {'id': 1, ...}}]
。
提前致谢!
答案 0 :(得分:0)
According to @apokryfos answer, in Laravel 5.8 whereHas()
had another syntax:
with("data")->whereHas([ "data", function ($query) use ($filter_text) ... ])