我有兩個關系表,在模型和遷移中定義,但是當我洗掉父資料時,子資料不會自動洗掉
用戶模型
class User extends Authenticatable implements MustVerifyEmail
{
use Notifiable;
use Friendable;
use HasApiTokens;
public function userstatus()
{
return $this->hasOne(UserStatus::class);
}
}
用戶狀態模型
class UserStatus extends Model
{
public function user()
{
return $this->belongsToOne(User::class);
}
}
用戶遷移:
class CreateUsersTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('users', function (Blueprint $table) {
$table->increments('id');
$table->string('first');
$table->string('last');
$table->string('description')->nullable();
$table->string('phone');
$table->string('question');
$table->string('answer');
$table->string('email')->unique();
$table->string('country');
$table->string('city');
$table->timestamp('email_verified_at')->nullable();
$table->timestamp('verified')->nullable();
$table->string('password');
$table->rememberToken();
$table->timestamps();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('users');
}
}
用戶狀態遷移:
class CreateUserStatusesTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('user_statuses', function (Blueprint $table) {
$table->increments('id');
$table->foreignId('user_id')->constrained('users')->onDelete('cascade')->onUpdate('cascade');
$table->string('status')->default('InActive');
$table->timestamps();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('userstatuses');
}
}
而且我還嘗試使用舊的遷移方法不起作用。用戶中有很多關系,我不能每次都洗掉它們,所以需要自動洗掉。
uj5u.com熱心網友回復:
添加到您的遷移:
$table->engine = 'InnoDB';
另見:https ://github.com/laravel/framework/issues/8730
uj5u.com熱心網友回復:
更改外鍵參考。
class CreateUserStatusesTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('user_statuses', function (Blueprint $table) {
$table->increments('id');
$table->foreign('user_id')->references('id')->on('users')->onDelete('cascade')->onUpdate('cascade');
$table->string('status')->default('InActive');
$table->timestamps();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('userstatuses');
}
}
uj5u.com熱心網友回復:
嘗試使用這個
public function up()
{
Schema::create('user_statuses', function (Blueprint $table) {
$table->increments('id');
$table->engine = "InnoDB";
$table->interger('user_id')->unsigned();
$table->foreign('user_id')->references('id')->on('users')->onDelete('cascade');
$table->string('status')->default('InActive');
$table->timestamps();
});
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/531404.html
