Nano Hash - криптовалюты, майнинг, программирование

Столбец не найден в полиморфных отношениях laravel

Разработчики :)

Я создал отношения (полиморфные многие-ко-многим) в laravel

между :

  • пользователи
  • одежда, обувь и т. д. (каждая модель сама по себе)

подсказка: пользователь может добавить в избранное все, что ему нравится (одежду, обувь и т. д.)

модель пользователя:

class User extends Authenticatable
{
public  function  clothes()
    {

        return $this->morphToMany('Etrade\clothes\Clothes' ,'favoritable' )
       ->withTimestamps('created_at','updated_at');

    }
}

модель одежды:

class Clothes extends Model
{

 // relationship with user
    public  function  user()
    {
        return $this->morphToMany('Etrade\Users\User' ,'favoritable')
       ->withTimestamps('created_at','updated_at');
    }

}

понравившаяся модель:

class Favriable extends Model
{
    protected $table = 'favoritables';

    public function favoritable()
    {
        return $this->morphTo();
    }
}

получение данных с использованием отношения:

- получить всех пользователей по данной одежде:

$clo= Etrade\clothes\Clothes::find(35);

$clo->user; // fetch the relation

=> Illuminate\Database\Eloquent\Collection {#760
     all: [
       Etrade\Users\User {#761
         id: 4,
         name: "Reta Paucek",
         email: "[email protected]",
         gender: 0,
         mobile: "",
         city_id: 0,
         active: 0,
         friend_status: 1,
         created_at: "2016-12-26 18:53:51",
         updated_at: "2016-12-26 18:53:51",
         pivot: Illuminate\Database\Eloquent\Relations\MorphPivot {#213
           favoritable_id: 35,
           user_id: 4,
           created_at: "2016-12-30 03:34:58",
           updated_at: "2016-12-30 03:34:58",
         },
       },
     ],
   }

- получить всю одежду для данного пользователя:

 $user = Etrade\Users\User::find(4);

 $user->clothes; // fetch the relationship

Получение ошибки:

Column not found: 1054 Unknown column 'favoritables.clothes_id' in 'field list' (SQL: select
`clothes`.*, `favoritables`.`favoritable_id` as `pivot_favoritable_id`, `favoritables`.`clothes_id` as `pivot_clothes_id`, `favoritables`.`created_at` as `pivo
t_created_at`, `favoritables`.`updated_at` as `pivot_updated_at` from `clothes` inner join `favoritables` on `clothes`.`id` = `favoritables`.`clothes_id` where
 `favoritables`.`favoritable_id` = 4 and `favoritables`.`favoritable_type` = Etrade\Users\User)'

Мой вопрос: как исправить эту ошибку ,,, отношения работают в одном направлении, а не в обоих ??


  • Вы нашли проблему? 25.10.2019

Ответы:


1

Я думаю, вы правильно скопируете код, если да, то я вижу там орфографическую ошибку, извините, но я не могу использовать «комментарий».

//Favriable, or Favoritable
class Favriable extends Model
{
    protected $table = 'favoritables';

    public function favoritable()
    {
        return $this->morphTo();
    }
}

Обратите внимание, что Laravel Eloquent использует snake-case для определения слов или чего-то еще, проверьте это:

https://laravel.com/docs/5.3/eloquent#defining-models

Я могу сказать, что вы должны быть осторожны с Laravel's Eloquent, когда дело касается орфографии. Она строгая и прямолинейная.

Плюс, если ваш стол называется «Избранное», модель должна быть «Любимый». Если таблица в базе данных называется «звездами», модель должна быть «звездой», просто чтобы назвать несколько примеров.

Надеюсь, это что-то просветит.

30.12.2016
Новые материалы

Кластеризация: более глубокий взгляд
Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

Как написать эффективное резюме
Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

Частный метод Python: улучшение инкапсуляции и безопасности
Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

Как я автоматизирую тестирование с помощью Jest
Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..