Laravel与雄辩模型的多重关系

问题描述 投票:0回答:2

我有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 relationship
2个回答
0
投票

我想在这里回答:Laravel get related models of related models

在你的情况下:return Product :: find($ id) - > images-> colors-> load('colorTags');


0
投票

我刚遇到同样的问题。

看起来问题可能是您使用“colors”作为关系的方法名称。

尝试改变:

public function colors() {
    return $this->belongsTo(Color::class);
}

public function colours() {
    return $this->belongsTo(Color::class);
}

而且我认为它会起作用。

我也使用“assets”和“templates”作为关系名称来解决这个问题。似乎某些关键字会与雄辩所做的其他事情发生冲突。如果我们能够在某个地方获得这些表格的列表,那将是件好事。

© www.soinside.com 2019 - 2024. All rights reserved.