我有一个关于laravel关系的问题OneToMany。我的数据库有2个table product和product_entry。产品将有信息选择相同的价格...而product_entry将有关于信息的信息。
1产品有很多product_entry将是另一种语言。但是网站同时只有1种语言,所以反正我只选择product_entry有product_entry_language当前语言相同吗?
例如:我有1个产品,语言为“en”和“es”。正常,当前语言是“en”。在刀片中,我必须预先知道product-> product_entries和if(product_entry_language ==“en”){** get Info **} =>我想不需要运行foreach
模型
class Product extends Model
{
use TransformableTrait;
protected $table = 'product';
protected $fillable = ['product_code','product_id'];
public function entries()
{
return $this->hasMany('App\Entities\ProductEntry', 'product_entry_product_id', 'product_id');
}
}
class ProductEntry extends Model
{
use TransformableTrait;
protected $table = 'product_entry';
protected $fillable = ['product_entry_product_id','product_entry_name'];
}
答案 0 :(得分:3)
您可以通过
执行此操作Product::with(['entries' => function ($q) {
$q->where('product_entry_language', \App::getLocale());
}])->get();
\App::getLocale()
是当前的laravel区域设置
答案 1 :(得分:0)
使用constraint,例如:
Product::with(['product_entry' => function ($q) use($language) {
$q->where('language', $language);
}])->get();
product_entry
是关系名称。