Laravel - 选择孩子在哪里参加

时间:2017-10-16 12:54:32

标签: php laravel laravel-5

我有一个关于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'];

}

enter image description here

2 个答案:

答案 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是关系名称。