在 laravel 中搜索表及其关系
Posted
技术标签:
【中文标题】在 laravel 中搜索表及其关系【英文标题】:search in a table and its relations in laravel 【发布时间】:2021-12-15 01:50:19 【问题描述】:我需要在预约表中搜索代码或作为预约关系的患者姓名。这是我到目前为止达到的代码,但它不起作用:
$lab = Lab::select('id', 'code')
->Where('code', 'like', "%$search_query%")
->with(['patient' => function ($q)
$q->select('id', 'avatar', DB::raw('CONCAT(first_Name, " ", second_Name) AS name')
->where('name', 'like', "%$search_query%")
->orWhereRaw("concat(first_name, ' ', second_name) like '%$search_query%' ")
);])
->limit(5)
->get();
【问题讨论】:
尝试将您的代码"%$search_query%"
更改为 '%'.$search_query.'%"
我已经试过了,可惜没用
【参考方案1】:
将use ($search_query)
添加到您的::with()
部分:
$lab = Lab::with(['patient' => function ($q) use ($search_query)
$q->select('id', 'avatar', DB::raw('CONCAT(first_Name, " ", second_Name) AS name')
->where('name', 'like', "%$search_query%")
->orWhereRaw("concat(first_name, ' ', second_name) like '%$search_query%' ")
);
])
->select('id', 'code')
->Where('code', 'like', "%$search_query%")
->limit(5)
->get();
【讨论】:
它给了我一个错误 in (->where('name', 'like', "%$search_query%")) where is undefined【参考方案2】:您可以使用whereHas
对 Laravel 关系进行如下条件:
$lab = Lab::select('id', 'code')
->Where('code', 'like', "%$search_query%")
->whereHas('patient', function ($q) use ($search_query)
$q->where('patients.name', 'like', "%$search_query%");
)
->limit(5)
->get();
【讨论】:
它没有显示结果:( 使用->toSql()
代替->get()
转储查询并在您的数据库中运行它以查看查询是否有任何错误以上是关于在 laravel 中搜索表及其关系的主要内容,如果未能解决你的问题,请参考以下文章