Laravel Eloquent много-много отношений с переводом - PullRequest
0 голосов
/ 09 мая 2018

У меня проблема со связями «многие ко многим» и переводами терминов. У меня есть 4 таблицы:

products
    - id, price, whatever
products_lang
    - id, product_id, lang, product_name
accessori
    - id, active
accessori_lang
    - id, accessori_id, lang, accessori_name

Я пытаюсь присвоить аксессуары продуктам с промежуточной таблицей с именем:

accessori_products

это модель для продукта:

class Product extends Model {

    protected $table = 'products';

    public function productsLang () {
        return $this->hasMany('App\ProductLng', 'products_id')->where('lang','=',App::getLocale());
    }

    public function productsLangAll() {
        return $this->hasMany('App\ProductLng', 'products_id');
    }

    public function accessori() {
        return $this->belongsToMany('App\Accessori', 'accessori_products');
    }
}

это модель для productLng:

class ProductLng extends Model {

    protected $table = 'products_lng';

    public function products() {
        return $this->belongsTo('App\Product', 'products_id', 'id');
    }
}

Тогда у меня есть модель для Accessori:

class Accessori extends Model {

    protected $table = 'accessori';

    public function accessoriLang() {
        return $this->hasMany('App\AccessoriLng')->where('lang','=',App::getLocale());
    }

    public function accessoriLangAll() {
        return $this->hasMany('App\AccessoriLng');
    }

    public function accessoriProducts() {
        return $this->belongsToMany('App\Products', 'accessori_products', 'accessori_id', 'products_id');
    }
}

И модель для AccessoriLng:

class accessoriLng extends Model {

    protected $table = 'accessori_lng';

    public function accessori() {
        return $this->belongsTo('App\Accessori', 'accessori_id', 'id');
    }
}

последняя модель для отношений между двумя таблицами выше:

class ProductAccessori extends Model {

    protected $table = 'accessori_products';

    public function accessoriProducts() {
        return $this->belongsTo('App\Product', 'accessori_id', 'products_id');
    }

}

Я пытаюсь найти аксессуары для каждого продукта и перевод, но у меня много проблем с этим. Я впервые общаюсь с переводами тоже. Кто-нибудь может направить меня в правильном направлении?

1 Ответ

0 голосов
/ 09 мая 2018

контроллер

$products = Product::has('accessori')->with([
  'productsLang ',
  'accessori' => function ($accessori){
      $accessori->with([
        'accessoriLang'
      ]);
   }
])->get();

return $products;

вы получите продукты с accessori, у которого есть accessoriLang.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...