Laravel - Неуникальная таблица / псевдоним Полиморфных Отношений - PullRequest
0 голосов
/ 03 сентября 2018

У меня есть три таблицы, они:

Контакты

  • CONTACT_NAME
  • contact_email
  • contact_phone

Местонахождение

  • LOCATION_NAME
  • location_country

Контакты ассоциации

  • association_contact_id
  • association_contacts_id
  • contacts_type

В моих моделях я установил Полиморфы ...

AssociationContact

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

Клиент

public function contact()
{
    return $this->morphToMany(
    // the related model
        'App\Models\AssociationContact',
        // the relationship name
        'contact',

        // the table name, which would otherwise be derived from the relationship name - twowordables
        'association_contacts',

        // the foreign key will be twowordable_id, derived from the relationship name, which you're adhering to
        'association_contact_id',

        // the 'other' key, which would otherwise be derived from the related model's snake case name - two_word_id
        'association_contacts_id'
    );
}

При запуске следующий код:

<code>$clients = Client::all();
foreach($clients as $client)
{
  echo "<pre>";
  print_r($client->contact);
  echo "
"; }

Я получаю следующую ошибку:

Syntax error or access violation: 1066 Not unique table/alias: 'association_contacts' (SQL: select `association_contacts`.*, `association_contacts`.`association_contact_id` as `pivot_association_contact_id`, `association_contacts`.`association_contacts_id` as `pivot_association_contacts_id`, `association_contacts`.`contact_type` as `pivot_contact_type` from `association_contacts` inner join `association_contacts` on `association_contacts`.`id` = `association_contacts`.`association_contacts_id` where `association_contacts`.`association_contact_id` = 7 and `association_contacts`.`contact_type` = App\Models\Client)

Должно быть, я настроил модельные отношения, но не уверен, что сделал неправильно.

Приветствия

1 Ответ

0 голосов
/ 03 сентября 2018

Поместите это в AssociationContact :

public function contact()
{
    return $this->morphTo(null,'contacts_type','association_contacts_id');
}

Измените отношение в таблице Клиент на следующее:

public function contact()
{
     return $this->morphMany('App\Models\Contact','contact','contacts_type','association_contacts_id');
    }

Это должно сработать.

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