Laravel Множественные отношения с красноречивой моделью - PullRequest
0 голосов
/ 09 апреля 2019

У меня есть 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');
}

Ответы [ 2 ]

0 голосов
/ 24 апреля 2019

Я только что столкнулся с той же проблемой.

Похоже, проблема может заключаться в том, что вы используете "colors" в качестве имени метода для отношения.

Попробуйте изменить:

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

до

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

И я думаю, что это сработает.

У меня также была эта проблема, использующая слова «активы» и «шаблоны» в качестве имен отношений. Похоже, что есть определенные ключевые слова, которые конфликтуют с чем-то другим, что делает eloquent. Было бы хорошо, если бы мы могли где-нибудь получить список этих форм.

0 голосов
/ 09 апреля 2019

Я думаю, что здесь ответили: Laravel получить похожие модели родственных моделей

В вашем случае: return Product :: find ($ id) -> images-> colors-> load ('colorTags');

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