💎一站式轻松地调用各大LLM模型接口,支持GPT4、智谱、豆包、星火、月之暗面及文生图、文生视频 广告
# 关联查询 ## 根据关联条件查询 在取得模型数据时,您可能想要以关联模型作为查询限制。例如,您可能想要取得所有「至少有一篇评论」的Blog 文章。可以使用 has 方法达成目的: ``` $posts = Post::has('comments')->get(); ``` 也可以指定运算符和数量: ``` $posts = Post::has('comments', '>=', 3)->get(); ``` 也可以使用"点号"的形式来获取嵌套的 has 声明: ``` $posts = Post::has('comments.votes')->get(); ``` 如果想要更进阶的用法,可以使用 whereHas 和 orWhereHas 方法,在 has 查询里设置 "where" 条件 : ``` $posts = Post::whereHas('comments', function($q) { $q->where('content', 'like', 'foo%'); })->get(); ``` ## 动态属性 Eloquent 可以经由动态属性取得关联对象。 Eloquent 会自动进行关联查询,而且会很聪明的知道应该要使用 get(用在一对多关联)或是 first (用在一对一关联)方法。可以经由和「关联方法名称相同」的动态属性取得对象。例如,如下面的模型对象 $phone: ``` class Phone extends Model { public function user() { return $this->belongsTo('App\User'); } } $phone = Phone::find(1); ``` 您可以不用像下面这样打印用户的 email : ``` echo $phone->user()->first()->email; ``` 而可以简写如下: ``` echo $phone->user->email; ``` > 注意: 若取得的是许多关联对象,会返回 Illuminate\\Database\\Eloquent\\Collection 对象。