laravel - Laravel 与 eloquent 模型的多重关系
问题描述
我有 3 个表,产品、图像和颜色表。
图像表属于产品表,也属于颜色表。在产品控制器内部,我需要获取与产品相关的数据,例如:产品图像和颜色表中的图像颜色。
产品型号:
namespace App;
use Illuminate\Database\Eloquent\Model;
use App\Image;
use App\Color;
class Product extends Model {
public function images() {
return $this->hasMany(Image::class);
}
}
产品控制器:
$products = Product::with('images', 'images.colors')->get();
图片型号:
use App\Product;
use App\Color;
class Image extends Model {
public function products() {
return $this->belongsTo(Product::class);
}
public function colors() {
return $this->belongsTo(Color::class);
}
颜色型号:
public function colorTags() {
return $this->hasMany('App\Image', 'color_id', 'id');
}
解决方案
我刚刚遇到了同样的问题。
看起来问题可能是您使用“颜色”作为关系的方法名称。
尝试改变:
public function colors() {
return $this->belongsTo(Color::class);
}
至
public function colours() {
return $this->belongsTo(Color::class);
}
我认为它会起作用。
使用“资产”和“模板”作为关系名称时,我也遇到过这个问题。似乎有些关键字会与 eloquent 正在做的其他事情发生冲突。如果我们能在某处获得这些表格的列表,那就太好了。
推荐阅读
- swift - macOS Swift-App 写权限问题?
- c - 尽管存在 libgd.a,但由于未定义的引用,我无法交叉编译使用 libgd 的简单程序
- flutter - removeWhere in list of files
- python - 尝试使用 BeautifulSoup 过滤结果但结果保持不变?
- javascript - 如何在 Javascript 中加载 url 以及保存的 Cookie?
- c++ - 是否允许在函数模板的显式特化中扣除多个模板参数?
- angular - angular-cli 全局全新安装后未找到 @angular-devkit/core 模块
- email - 在不使用表格转换器的情况下从 Google 表格发送电子邮件作为表格
- javascript - Javascript Date() 在 IE 中返回无效日期(版本 11)
- javascript - 循环遍历每个元素并将值添加到新对象。将这些对象添加到数组并访问它们的值