سلام دوستان. من دوتا جدول توی دیتابیسم دارم که میخوام بین این دو جدول رابطه چند به چند ایجاد کنم. یک جدول میانی هم ایجاد کردم. اما مشکل من اینه که میخوام علاوه بر آیدی دوتا جدولی که میخوام با هم رابطه داشته باشن، میخوام یک ستون دیگه هم به این جدول میانی اضافه کنم.
مثلا مایگریشن زیر رو فرض کنید:
Schema::create('role_user', function (Blueprint $table) {
$table->Integer('role_id')->unsigned();
$table->foreign('role_id')->references('id')->on('roles')->onDelete('cascade');
$table->Integer('user_id')->unsigned();
$table->foreign('user_id')->references('id')->on('users')->onDelete('cascade');
$table->boolian('status')->default(0);
$table->primary(['role_id' , 'user_id']);
});
آیا روش تعریف مایگریشن به این صورت درسته؟ یا برای ستون سوم باید کار دیگه ای انجام بدم؟
و اینکه برای اینکه توی این جدول میانی اطلاعاتی رو ثبت کنم به چه صورت باید تک تک فیلد هارو مقدار بدم؟
$user->roles()->attach($role_id , array('status' => $status));
من به این روش سعی میکنم اطلاعات رو وارد جدول کنم اما با ارور مواجه میشم.
@ali.bayat
وقتی رابطه رو به شکلی که شما گفتید تعریف کردم با این ارور مواجه میشم
SQLSTATE[42S22]: Column not found: 1054 Unknown column 'created_at' in 'field list'
ولی وقتی به این صورت رابطه رو تعریف میکنم:
return $this->belongsToMany('App\Model')
همچین مشکلی پیش نمیاد. درواقع بعد از اینکه دکمه ثبت رو میزنم، اطلاعات به درستی ذخیره میشه. به نظرتون اینطوری مشکلی پیش نمیاد؟
شاید پاسخ شما همینجا باشد