如何查询 Laravel Eloquent 的 belongsTo 关系?

Posted

技术标签:

【中文标题】如何查询 Laravel Eloquent 的 belongsTo 关系?【英文标题】:How to query Laravel Eloquent belongsTo relationship? 【发布时间】:2019-02-15 13:15:58 【问题描述】:

我正在研究 Laravel Eloquent 关系,有不同的例子。我有一个州模型和城市模型,其中 City belongsTo State 和 State hasMany City。

根据https://laravel.com/docs/5.7/eloquent-relationships#eager-loading 上的给定代码,我成功查询了名称以“p”开头的城市的州。但我无法检索州名以“l”开头的所有城市。

这可能是一个非常基本的问题,但我仍在寻求帮助以了解失败的原因和原因。

【问题讨论】:

谢谢@afraz。是不是可以通过State模型查询,比如 $states= States::where('city', function ($query) $query->where('name', 'like', 'p%') ; )->get(); ? Above 将返回相关城市名称以字母 p 开头的州 【参考方案1】:

试试这个:

State::where('name','like','l%')->get();

查询关系:

$states= City::whereHas('state', function ($query) 
   $query->where('name', 'like', 'l%');
)->get();

【讨论】:

【参考方案2】:

您可以使用whereHas 对相关模型应用过滤器,例如

$states= City::whereHas('state', function ($query) 
    $query->where('name', 'like', 'i%');
)->get();

Querying Relationship Existence

【讨论】:

以上是关于如何查询 Laravel Eloquent 的 belongsTo 关系?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Laravel Eloquent 创建子查询?

如何在 Laravel 5.8 中使用 Eloquent 进行查询?

如何使用 Eloquent 在 Laravel 中开始查询?

如何使用 Laravel Eloquent 和 Laravel Query Builder 进行联合查询?

laravel Eloquent ORM - 如何获得编译查询?

如何将此 Laravel PHP 代码简化为一个 Eloquent 查询?