我試圖在我的數據透視表中插入belongsTo。我有一個意見和文件表具有一對多的關係和評論和用戶表具有多對多的關係。數據透視表是comment_user。BelongsToMany.php中的ErrorException(非法偏移類型)
我可以插入屬於關聯的關係,但我有一個問題,我需要與用戶id
(當前用戶)插入註釋id
在一起。看到我下面的關係。
數據庫圖表
模型:
評論
class Comment extends Model
{
protected $tables = 'comments';
protected $fillable =
[
'comment',
'document_id',
];
public function users()
{
return $this->belongsToMany('App\Models\User', 'comment_user', 'comment_id', 'user_id');
}
public function documents()
{
return $this->belongsTo('App\Models\Document');
}
}
用戶:
class User extends Model implements AuthenticatableContract
{
use Authenticatable;
protected $table = 'users';
protected $fillable = [
'first_name',
'last_name',
'middle_name',
'email',
'username',
'address',
'password',
'role_permission_id',
];
public function comments()
{
return $this->belongsToMany('App\Models\Comment', 'comment_user', 'user_id', 'comment_id');
}
}
控制器:
class CommentController extends Controller
{
public function postComments(Request $request, Document $id)
{
$this->validate($request,
[
'comment' => 'required',
]);
$commentObject = new Comment();
$user = Auth::user();
$commentObject->comment = $request->comment;
$id->comments()->save($commentObject);
$commentObject->users()->sync(['comment_id' => $commentObject, 'user_id' => $user->id],false);
return redirect()->back();
}
}
問題
我只是想插入模型評論的id
,也是當前用戶。我試過,但它說。
$commentObject->users()->sync(['user_id' => $user->id],false);
SQLSTATE [23000]:完整性約束違規:1452不能添加或更新子行:外鍵約束失敗(
webdev
comment_user
,約束comment_user_sender_id_foreign
外鍵(sender_id
)參考文獻users
(id
)ON DELETE CASCADE)(SQL:插入comment_user
(comment_id
,user_id
)值(36,11))
正如你可以在這裏看到的是評論的當前ID,並且是登錄用戶的當前ID。任何幫助我怎樣才能做到這一點?
Off-Topic:用戶評論在大多數情況下是1:n關係。所以你可以直接在註釋表中插入user_id,不需要單獨的連接表。 –
並且請將您的表格結構'create table ...'添加到您的問題中,以便我們檢查約束條件。 –
什麼說u-nik是非常重要的,而不是那個題外話題。 '''user-> comments()'''應該是'''hasMany()'''。用戶**具有許多**評論,並且評論**屬於**用戶。你應該這樣做,它會變得更簡單。 –