В Laravel 5.8, как настроить полиморфные отношения между моделью и моделью пакета? - PullRequest
1 голос
/ 17 мая 2019

У меня есть модель пакета с именем Company\Contact\Models\Contact

У меня есть локальная модель с именем App\Models\MenuItem

Пункт меню представляет собой полиморфную таблицу с:

id
menuable_id  
menuable_type

Когда я использую его на локальных моделях, таких как \App\Models\Page, он работает нормально. Когда я называю menuable отношение в моей MenuItem модели, это:

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

$menuitem->menuable это дает мне пример модели страницы, отлично, отлично. Но когда я делаю это на любой модели пакета, это null.

Я пытался связать свою модель:

$this->app->bind('Company\Contact\Models\Contact', function () {
    return new Contact;
});

Но это не сработало.

Затем я попытался отобразить его в AppServiceProvider boot:

use Company\Contact\Models\Contact; // This does dump an instance of the contact model. 

Relation::morphMap([
    'Company\Contact\Models\Contact' => Contact::class,
]);

Кто-нибудь знает, как это сделать?

Пожалуйста, дайте мне знать, если я могу предоставить дополнительную информацию.

1 Ответ

1 голос
/ 17 мая 2019

Вы можете расширить модель пакетов из собственной базы кода приложений.Создайте новый контакт класс в вашем каталоге App/Models:.

<?php

namespace App\Models;

use Company\Contact\Models\Contact as CompanyContact;

class Contact extends CompanyContact
{
  // your polymorphic relationship methods
}

Теперь вы можете использовать модель App\ModelContact в своем приложении вместо модели пакетов.

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