मेरे पास लार्वा संबंध OneToMany के साथ एक प्रश्न है। मेरे डेटाबेस में 2 टेबल उत्पाद और product_entry है। उत्पाद में समान मूल्य चुनने के लिए जानकारी होगी... और product_entry में जानकारी के बारे में जानकारी होगी।

1 उत्पाद में कई उत्पाद हैं_एंट्री दूसरी भाषा होगी। लेकिन साइट एक ही समय में केवल 1 भाषा है, तो क्या वैसे भी मैं केवल product_entry का चयन करता हूं product_entry_language वही वर्तमान भाषा है?

उदाहरण: मेरे पास "en" और "es" भाषा के साथ 1 उत्पाद a है। सामान्य, वर्तमान भाषा "एन" है। ब्लेड में, मुझे उत्पाद-> product_entries और if(product_entry_language == "en") {** get Info **} => मुझे फॉर्च्यून चलाने की आवश्यकता नहीं है

आदर्श

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

3
Phuc Vo 16 अक्टूबर 2017, 15:54

2 जवाब

सबसे बढ़िया उत्तर

आप यह कर सकते हैं

Product::with(['entries' => function ($q) {
  $q->where('product_entry_language', \App::getLocale());
}])->get();

\App::getLocale() वर्तमान लार्वा स्थान है

3
Adnan Mumtaz 16 अक्टूबर 2017, 16:02

उदाहरण के लिए, बाधा का इस्तेमाल करें:

Product::with(['product_entry' => function ($q) use($language) {
    $q->where('language', $language);
}])->get();

जहां product_entry संबंध का नाम है।

1
Alexey Mezenin 16 अक्टूबर 2017, 15:58