1
私はこのような問題を抱えています。今日このコードに関連する別の質問をします。この問題は解決しました。多対多リレーションシップ定義で問題を解決するにはどうすればいいですか
public function addSubject(Request $request){
$student=User::find($request->invisible);
$classsubjects = $request['classsubjects'];
$student->classSubjects()->attach($classsubjects);
return redirect()->route('users.index')
->with('flash_message',
'User successfully added.');
}
ここでは、ClassSubject ModelとUserモデル定義の定義を挙げています。
<?php
namespace App;
use Illuminate\Notifications\Notifiable;
use Illuminate\Foundation\Auth\User as Authenticatable;
use Spatie\Permission\Traits\HasRoles;
class User extends Authenticatable
{
use Notifiable;
use HasRoles;
/**
* The attributes that are mass assignable.
*
* @var array
*/
protected $fillable = [
'name', 'email', 'password','language'
];
/**
* The attributes that should be hidden for arrays.
*
* @var array
*/
protected $hidden = [
'password', 'remember_token',
];
public function setPasswordAttribute($password)
{
$this->attributes['password'] = bcrypt($password);
}
public function classSubject()
{
return $this->hasMany('App\ClassSubject');
}
public function classSubjects()
{
return $this->belongsToMany('App\ClassSubject');
}
}
これは私のclassSubjectモデルです。
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class ClassSubject extends Model
{
protected $fillable = [
'class_room_id','subject_id','teacher_id'
];
public function classRoom()
{
return $this->belongsTo('App\ClassRoom','class_room_id','id');
}
public function subject()
{
return $this->belongsTo('App\Subject','subject_id','id');
}
public function teacher()
{
return $this->belongsTo('App\User','teacher_id','id');
}
public function students()
{
return $this->belongsToMany('App\User');
}
}
これは私が得ているエラーです。
Illuminate \ Database \ QueryException (42S02)
SQLSTATE[42S02]: Base table or view not found: 1146 Table 'lcurve.class_subject_user' doesn't exist (SQL: insert into `class_subject_user` (`class_subject_id`, `user_id`) values (3, 4), (1, 4))
エラーメッセージのようにテーブルを作成する必要がありますか。
'ClassSubject'と' User'間のピボットテーブルの名前は何ですか?そのモデルを投稿できますか? – Laerte
中間のピボットテーブルを切断する必要がありますか? –
はい。 belongsToMany relationshinpを持つには、ピボットテーブルが必要です。私は答えとして例を掲示します。 – Laerte