Я очень новичок в полиморфных отношениях и борюсь за свое первое задание.Мой сценарий из реальной жизни сложен, поэтому для целей этого вопроса я немного упростил его.
У меня есть ряд продуктов.Каждый из этих продуктов может быть помечен на одну или несколько категорий, брендов и потребителей.Например:
Я рассчитывал с этой настройкой, мне понадобится таблица для моих полиморфных отношений, как показано ниже:
Я создал новый класс Taggable, который содержит следующие
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class Taggable extends Model
{
public function taggable()
{
return $this->morphTo();
}
}
... и добавил метод в мой класс Product:
public function taggedCategories()
{
return $this->morphMany(Taggable::class, 'taggable');
}
Наконец, в моем ProductController я пытаюсь получить все продукты с их отношениями следующим образом:
$products = Product::with('taggedCategories')
Хотя это не приводит к ошибке, в моих результатах не возвращаются категории.Глядя на вывод SQL в LaravelDebugBar, я вижу следующий SQL.
select * from `taggables` where `taggables`.`taggable_id` in (1) and `taggables`.`taggable_type` = 'App\Models\Product'
Это явно не правильно, но я не могу ни ради любви, ни за деньги выяснить, где я ошибся.Я чувствую, что я рядом, но не совсем там.
Может кто-нибудь объяснить, что не так?Кроме того, нужно ли мне делать что-то другое для получения «Бренда», так как это отношения один ко многим, а не многие ко многим?
Спасибо