如何使用 laravel 中的附加字段更新我的数据透视表 Table
How to update my Pivot Table with addition field in laravel
我的 table 与 eloquent 的关系 laravel 5.3
User
--id
--name
Gallery
--id
--name
Video
--id
--name
Tags *pivot table
--id
--gallery_id
--video_id
--user_id
--created_at
--deleted_at
图库模型:
public function videos()
{
return $this->belongsToMany(Video::class,'tags','gallery_id','video_id')->withPivot('user_id')->withTimestamps();
}
视频模型
public function galleries()
{
return $this->belongsToMany(Gallery::class,'tags','video_id','gallery_id') ->withPivot('user_id')->withTimestamps();
}
我的控制器
public function store(Request $request)
{
$data['name]=$request->name;
$video=Video::create($request->name);
$video->galleries()->attach($request->gallery_id,['user_id' => Auth::id()]);
return redirect('/video');
}
它的工作已经完成,
但是当更新面临错误时(非法偏移类型)
控制器更新功能
public function update(Request $request, Video $video)
{
$data['name]=$request->name;
$video->update($data);
$video->galleries()->sync([$request->gallery_id=>['user_id'=>Auth::user()->id]]);
return redirect('/video');
}
谁能帮我解决问题
$video->update() 正在寻找一个数组,其中 $request->name 可能是一个字符串。请尝试以下操作。
public function update(Request $request, Video $video)
{
$video->update(['name' => $request->name]);
$gallery_id = $request->gallery_id;
$video->galleries()->sync([$gallery_id => ['user_id'=>Auth::user()->id]]);
return redirect('/video');
}
您还混淆了 Auth::id() 和 Auth::user()->id 的用法。这有什么原因吗?
编辑:
根据评论,您似乎在尝试使用数组作为数组中的索引。如果您总是处理一个数组,则必须将代码更改为如下所示,这将以正确的格式构建数组。
public function update(Request $request, Video $video)
{
$video->update(['name' => $request->name]);
$sync_array = [];
foreach($request->gallery_id as $gallery_id)
$sync_array[$gallery_id] = ['user_id' => Auth::user()->id];
$video->galleries()->sync($sync_array);
return redirect('/video');
}
如果您有时有一个字符串,有时有一个数组,则必须在代码中添加一个条件来检查它并相应地编辑您的代码。
我的 table 与 eloquent 的关系 laravel 5.3
User
--id
--name
Gallery
--id
--name
Video
--id
--name
Tags *pivot table
--id
--gallery_id
--video_id
--user_id
--created_at
--deleted_at
图库模型:
public function videos()
{
return $this->belongsToMany(Video::class,'tags','gallery_id','video_id')->withPivot('user_id')->withTimestamps();
}
视频模型
public function galleries()
{
return $this->belongsToMany(Gallery::class,'tags','video_id','gallery_id') ->withPivot('user_id')->withTimestamps();
}
我的控制器
public function store(Request $request)
{
$data['name]=$request->name;
$video=Video::create($request->name);
$video->galleries()->attach($request->gallery_id,['user_id' => Auth::id()]);
return redirect('/video');
}
它的工作已经完成, 但是当更新面临错误时(非法偏移类型) 控制器更新功能
public function update(Request $request, Video $video)
{
$data['name]=$request->name;
$video->update($data);
$video->galleries()->sync([$request->gallery_id=>['user_id'=>Auth::user()->id]]);
return redirect('/video');
}
谁能帮我解决问题
$video->update() 正在寻找一个数组,其中 $request->name 可能是一个字符串。请尝试以下操作。
public function update(Request $request, Video $video)
{
$video->update(['name' => $request->name]);
$gallery_id = $request->gallery_id;
$video->galleries()->sync([$gallery_id => ['user_id'=>Auth::user()->id]]);
return redirect('/video');
}
您还混淆了 Auth::id() 和 Auth::user()->id 的用法。这有什么原因吗?
编辑:
根据评论,您似乎在尝试使用数组作为数组中的索引。如果您总是处理一个数组,则必须将代码更改为如下所示,这将以正确的格式构建数组。
public function update(Request $request, Video $video)
{
$video->update(['name' => $request->name]);
$sync_array = [];
foreach($request->gallery_id as $gallery_id)
$sync_array[$gallery_id] = ['user_id' => Auth::user()->id];
$video->galleries()->sync($sync_array);
return redirect('/video');
}
如果您有时有一个字符串,有时有一个数组,则必须在代码中添加一个条件来检查它并相应地编辑您的代码。