请我尝试在 Laravel 5.4 中建立多对多关系,但我总是收到此错误:
Builder.php 第 2443 行中的 BadMethodCallException:调用未定义的方法 Illuminate\Database\Query\Builder::categories()
我认为我的代码很好,我无法修复它,请帮忙。
谢谢你。
这是我的代码:
用户模型
class User extends Model
{
public function categories()
{
return $this->belongsToMany('App\Category', 'user_categorys');
}
}
品类模型
class Category extends Model
{
public function users()
{
return $this->belongsToMany('App\User', 'user_categorys');
}
}
调用方法
$user = User::where('id',$id_user)->first();
foreach ($request->input("idcategs") as $value) {
$user->categories()->save($value);
}
在使用多对多关系附加或分离模型时attach()
,您应该使用,detach()
和sync()
方法。
如果idcategs
是一组 ID,请执行以下操作:
$user = User::find($id_user);
$user->attach($request->idcategs);
如果它是一组准备好的数据,则需要先创建类别:
$categoriesIds = [];
$user = User::find($id_user);
foreach ($request->idcategs as $value) {
$categoriesIds[] = Category::create($value)->id;
}
$user->attach($categoriesIds);
https://laravel.com/docs/5.4/eloquent-relationships#updating-many-to-many-relationships
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句