Оставить комментарий пользователя к комментарию удалить Laravel - PullRequest
0 голосов
/ 25 января 2020

Я хочу создать раздел комментариев для моих статей. Моя логика c говорит, что в статье много комментариев, а у пользователя (читателя статей) много комментариев. Поэтому я создал таблицу с двумя внешними ключами.

Если статья удалена -> Каскад и удалить комментарии.

Как сделать так, чтобы при удалении пользователя я оставлял комментарий статья? вот код:

        Schema::create('comments', function (Blueprint $table) {
        $table->bigIncrements('id');
        $table->text('body');
        $table->unsignedBigInteger('article_id');
        $table->unsignedBigInteger('user_id');
        $table->timestamps();

        $table->foreign('article_id')->references('id')->on('articles')->onDelete('cascade');
        $table->foreign('user_id')->references('id')->on('users')->onDelete('**what do I write here?**');
    });

Ответы [ 2 ]

3 голосов
/ 25 января 2020

Вы должны установить для столбца 'user_id' значение nullable, чтобы при удалении пользователя из базы данных вы могли установить для него значение null.

$table->unsignedBigInteger('user_id')->nullable();
$table->foreign('user_id')->references('id')->on('users')->onDelete('set null');

Затем в своем интерфейсе вы можете сделать:

$comment->user()->exists() ? $comment->user->username : 'Unknown User';
0 голосов
/ 25 января 2020

Просто добавьте SoftDeletes на вашу модель

namespace App;

use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\SoftDeletes;

class Flight extends Model
{
    use SoftDeletes;

    /**
     * The attributes that should be mutated to dates.
     *
     * @var array
     */
    protected $dates = ['deleted_at'];
}

https://laravel.com/docs/5.7/eloquent#soft -deleting

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