假设我有以下模型:
class Movie extends Eloquent
{
public function director()
{
return $this->belongsTo('Director');
}
}
现在,我想使用一个where条件来获取电影,该条件基于directors表中的一列。
有没有办法做到这一点?找不到有关基于属于关系的条件的任何文档。
发布于 2014-06-01 03:45:02
你可以尝试一下(在Laravel
网站上查看Querying Relations ):
$movies = Movie::whereHas('director', function($q) {
$q->where('name', 'great');
})->get();
另外,如果您反转查询,如下所示:
$directorsWithMovies = Director::with('movies')->where('name', 'great')->get();
// Access the movies collection
$movies = $directorsWithMovies->movies;
为此,您需要在Director
模型中声明一个hasmany
关系:
public function movies()
{
return $this->hasMany('Movie');
}
如果想要将变量传递给function($q) { //$variable }
,那么
function($q) use ($variable) { //$variable }
发布于 2021-12-12 14:15:12
whereBelongsTo()
对于新版本的Laravel,您可以使用whereBelongsTo()
。
它看起来像这样:
$director = Director::find(1);
$movies = Movie::whereBelongsTo($director);
有关详细信息,请参阅docs。
is()
对于一对一关系,可以使用is()
。
$director = Director::find(1);
$movie = Movie::find(1);
$movie->director()->is($director);
https://stackoverflow.com/questions/23970762
复制相似问题