mysql - 如何使用下面的 whereHas like sql 查询创建雄辩的范围?
问题描述
如何使用下面的 whereHas like sql 查询来创建雄辩的范围
表属性(id、title、slug、category_id、location_id、image)
表类别(id,名称,slug)
表城市(id,名称,slug)
我需要的简单 sql 查询
Select * from property
join category on property.category_id=category.id
join city on property.location_id = city.id
where category.name = $query and city.name=$query
我想在Property
模型中做出雄辩的范围
解决方案
这在人际关系中很容易。
根据您的查询,假设这是您的Property
模型:
class Property extends Model
{
public function category()
{
return $this->belongsTo(Category::class);
}
public function city()
{
return $this->belongsTo(City::class, 'location_id');
}
现在我可以像这样编写我的 Eloquent 查询:
$query = 'Example';
$properties = Property::where('name', $query)
->whereHas('category', function (Builder $builder) use ($query) {
$builder->where('name', $query);
})->get();
请注意,它Builder
是从Illuminate\Database\Eloquent\Builder
. 您还可以添加with('category', 'city')
到上面的查询中以预先加载这些关系。
推荐阅读
- visual-studio - 使用 msbuild 命令行跳过依赖项 wixproject
- java - 无法使用 EWS API [SOAP 请求] 将 Exchange 帐户的电子邮件列入白名单
- javafx - Corretto 是否支持 javaFX?
- ios - Swift 中基于泛型的返回类
- python - python中列表的二进制搜索
- cakephp - cakephp 3 路由匹配 /*.php
- python - 如何保存刚刚发送的消息的消息对象或 id?
- linux - Linux 上是否提供 win32com 库?
- android - 多行`ReplacementSpan`绘图问题
- reactjs - 如果 URL 无效,如何重定向到主页?