如何在本地范围内按条件 select 文章?
How to select articles by condition in local scope?
我有 Article
模型和 Country
模型,其中指定关系:
文章
public function country(){
return $this-has_one("Country);
}
我需要获取国家/地区为 "USA" 的文章,为此我这样做:
Articles:with("country")->get();
它returns我与相关国家的所有文章。
如何为 with("country")
分配局部作用域以设置附加条件?
我试过了:
public function scopeLocation($query)
{
$country_name = Location::get());
if(!empty($country_name)){
return $query->where('name', '=', $country_name);
}
}
但我不知道如何在 with
中调用它
你做错了。你不需要在这里使用本地范围,你不需要在这里使用 with()
并且你没有正确定义关系。
首先,将country_id
字段添加到articles
table并定义关系:
public function country()
{
return $this->belongsTo('App\Country');
}
然后使用简单查询按国家 ID 获取所有文章:
$articles = Article::where('country_id', $countryId)->get();
如果您不知道国家 ID,但知道国家名称,请使用 whereHas()
:
$articles = Article::whereHas('country', function($q) use($countryName) {
$q->where('name', $countryName);
})->get();
我有 Article
模型和 Country
模型,其中指定关系:
文章
public function country(){
return $this-has_one("Country);
}
我需要获取国家/地区为 "USA" 的文章,为此我这样做:
Articles:with("country")->get();
它returns我与相关国家的所有文章。
如何为 with("country")
分配局部作用域以设置附加条件?
我试过了:
public function scopeLocation($query)
{
$country_name = Location::get());
if(!empty($country_name)){
return $query->where('name', '=', $country_name);
}
}
但我不知道如何在 with
你做错了。你不需要在这里使用本地范围,你不需要在这里使用 with()
并且你没有正确定义关系。
首先,将country_id
字段添加到articles
table并定义关系:
public function country()
{
return $this->belongsTo('App\Country');
}
然后使用简单查询按国家 ID 获取所有文章:
$articles = Article::where('country_id', $countryId)->get();
如果您不知道国家 ID,但知道国家名称,请使用 whereHas()
:
$articles = Article::whereHas('country', function($q) use($countryName) {
$q->where('name', $countryName);
})->get();