我有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');
}
我想在这里回答:Laravel get related models of related models
在你的情况下:return Product :: find($ id) - > images-> colors-> load('colorTags');
我刚遇到同样的问题。
看起来问题可能是您使用“colors”作为关系的方法名称。
尝试改变:
public function colors() {
return $this->belongsTo(Color::class);
}
至
public function colours() {
return $this->belongsTo(Color::class);
}
而且我认为它会起作用。
我也使用“assets”和“templates”作为关系名称来解决这个问题。似乎某些关键字会与雄辩所做的其他事情发生冲突。如果我们能够在某个地方获得这些表格的列表,那将是件好事。