Триггер удаления Laravel ничего не происходит - PullRequest
0 голосов
/ 25 марта 2019

У меня есть две модели отношений.

Таким образом, когда модель A будет удалена, все связанные модели B также должны быть удалены.

Я работаю с программным удалением.

Вот мой триггер в модели A:

protected static function boot()
{
    parent::boot();

    // Delete Relations
    self::deleting(function (Customer $customer) {
        $customer->contacts()->delete();
    });
}

Когда я удаляю модель A, связанные модели из B не будут затронуты. Так что ничего не происходит.

Так что триггер не работает. Я не получил ошибку или что-то еще. Кто-нибудь знает, как мне найти ошибку?

Edit: Отношения выглядят так:

public function contacts()
{
    return $this->hasMany(Contact::class);
}

и

public function customer()
{
    return $this->belongsTo(Customer::class);
}

Во всех остальных случаях, когда я использую отношение, оно работает нормально.

Ответы [ 2 ]

1 голос
/ 25 марта 2019

Возможно, вам потребуется изменить запрос, чтобы завершить построитель отношений, а затем удалить.Изменить:

$customer->contacts()->delete();

на:

$customer->contacts->delete();
0 голосов
/ 25 марта 2019

Вы должны изменить свой файл миграции.

$table->foreign('customer_id')->references('id')->on('customers')->onDelete('cascade');

. Вы также можете удалить контакты, прежде чем удалять клиента как этот

class Customer extends Eloquent
{
    public function contacts()
    {
        return $this->has_many('Contact');
    }

    public function delete()
    {
        // delete all related contacts
        $this->contacts()->delete();

        // delete the customer
        return parent::delete();
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...