laravel - Laravel Eloquent 与翻译的多对多关系
问题描述
我对多对多关系和术语的翻译有疑问。我有 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');
}
}
我正在尝试获取每个产品的配件并获得翻译,但我对此有很多问题。这也是我第一次与翻译建立多对多关系。谁能把我引向正确的方向?
解决方案
控制器
$products = Product::has('accessori')->with([
'productsLang ',
'accessori' => function ($accessori){
$accessori->with([
'accessoriLang'
]);
}
])->get();
return $products;
您将获得带有 accessoriLang 的产品。
推荐阅读
- javascript - 如何在树视图中保留选择
- android - android应用程序被杀死时如何删除/删除所有通知?
- c# - 如何在 Monogame 中标准化我的对角线运动
- python - 文件中括号内数字差的总和脚本
- android - Android Lint 配置文件 - 如何启用规则?
- android - Buildozer 执行最后一条命令 apk 失败
- node.js - 在 Docker 中运行 React 应用程序(基本问题)
- sql - 将 Varchar 值旋转到列
- php - 如何从另一个 php 文件中获取选定的值?
- flutter - 类型为 xxxx 的对象/工厂未在 GetIt 中注册