سلام
من برای کار با sql server در لاراول یک مشکل عجیبی دارم که ممنون میشم راهنمایی کنید.
این جدول من هستش:
Schema::create('comments', function (Blueprint $table) {
$table->bigIncrements('id');
$table->unsignedBigInteger("article_id");
$table->foreign("article_id")->references("id")->on("articles")->onDelete("cascade");
$table->unsignedBigInteger("user_id");
$table->foreign("user_id")->references("id")->on("users")->onDelete("cascade");
$table->text("comment");
$table->bigInteger("level");
$table->boolean("status")->default(0);
$table->timestamps();
});
اما وقتی این Migration اجرا میشه این خطا رو میده:
Illuminate\Database\QueryException : SQLSTATE[42000]: [Microsoft][ODBC Driver 17 for SQL Server][SQL Server]Introducing
FOREIGN KEY constraint 'comments_user_id_foreign' on table 'comments' may cause cycles or multiple cascade paths. Specify
ON DELETE NO ACTION or ON UPDATE NO ACTION, or modify other FOREIGN KEY constraints. (SQL: alter table "comments" add const
raint "comments_user_id_foreign" foreign key ("user_id") references "users" ("id") on delete cascade)
at C:\xampp\htdocs\tinyblog - copy\vendor\laravel\framework\src\Illuminate\Database\Connection.php:669
665| // If an exception occurs when attempting to run a query, we'll format the error
666| // message to include the bindings with SQL, which will make this exception a
667| // lot more helpful to the developer instead of just the database's errors.
668| catch (Exception $e) {
> 669| throw new QueryException(
670| $query, $this->prepareBindings($bindings), $e
671| );
672| }
اما وقتی یکی از کلید های خارجی در جدول بالا رو حذف میکنم یا فقط یکی از onDelete ها رو حذف می کنم (فرقی نداره کدوم) مشکل حل میشه و انگار نمیزاره 2 تا onDelete داخل یک جدول داشته باشم.
کد بالا برای MySQL به درستی کار میکنه و خطایی نمیده.
راه حلی هست؟
@hesammousavi @elyasbeshkani @ali.bayat @juza66
جداول users و articles قبل از جدول comments ایجاد میشن
@mehdisut
@elyasbeshkani @hesammousavi @ali.bayat
باید جدا جدا migration کنی اول با جدول articles رو پاک کن بعد بسازش و بعدش commentرو بساز با دستور fresh این کار رو انجام نده
آیا مایل به ارسال نوتیفیکیشن و اخبار از طرف راکت هستید ؟