Задать вопрос
65536
@65536

Связывание моделей с типом связи morphTo?

Есть две модели...

class BalanceOperation extends \Model
{
    protected $table = 'gc_balance_operations';

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

    ...
}


class Client extends \Model
{
    protected $table = 'gc_clients';

    public function balanceOperations()
    {
        return $this->morphMany(BalanceOperation::class, 'contractor');
    }

    ...
}


Существует ли какой-то способ связывать две существующие модели одним движением руки. Я не нашел и связываю так:
$operation->contractor_type = get_class($contractor);
$operation->contractor_id = $contractor->id;

$operation->save();


Перепробовал методы для других типов связи (save, attach, associate) - ни один не работает ни на модели ни на билдере. Да и в документации ничего нет об этом, только про выборки. Неохото залезать в элоквент. Скажите, кто точно знает, есть эта фича или нет
  • Вопрос задан
  • 146 просмотров
Подписаться 1 Оценить Комментировать
Решения вопроса 1
v_decadence
@v_decadence
Должно работать так, при условии, что связь правильно настроена.
$operation->contractor()->associate($contractor);
$operation->save();

associate не сохраняет модель, только задает нужные атрибуты.

Зря не хотите заходить в исходники, по ним почти всегда можно понять, как работает метод.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы