Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Laravel 使用attach()添加模型和透视模型之间的关系_Laravel_Eloquent_Laravel 5.6 - Fatal编程技术网

Laravel 使用attach()添加模型和透视模型之间的关系

Laravel 使用attach()添加模型和透视模型之间的关系,laravel,eloquent,laravel-5.6,Laravel,Eloquent,Laravel 5.6,我有一个多对多关系的轴心模型,叫做UserWebpage namespace App; use Illuminate\Database\Eloquent\Relations\Pivot; class UserWebpage extends Pivot { public function collections(){ return $this->belongsToMany('App\Collection', 'collection_user_webpage');

我有一个多对多关系的轴心模型,叫做UserWebpage

namespace App;

use Illuminate\Database\Eloquent\Relations\Pivot;

class UserWebpage extends Pivot
{
    public function collections(){
        return $this->belongsToMany('App\Collection', 'collection_user_webpage');
    }
}
我还有一个叫Collection的模型

namespace App;

use Illuminate\Database\Eloquent\Model;

class Collection extends Model
{
    public function user(){
        return $this->belongsTo('App\User');
    }

    public function userWebpages(){
        return $this->belongsToMany('App\UserWebpage', 'collection_user_webpage');
    }
}
我试图在UserWebpage和Collection之间建立多对多关系。我知道这样的事情应该是可能的,基于这个问题,我发现:

我的问题是:

当我尝试在UserWebpage实例和Collection实例之间插入关系时,出现以下错误

插入关系的代码:

App\UserWebpage::where('user_id', $user->id)->take(2)->get()->each(function($user_webpage) use ($user){
    $collection = factory(App\Collection::class)->create(['user_id' => $user_webpage->user_id]);
    $collection->userWebpages()->attach($user_webpage->id);
});
我得到的错误是:

Illumb\Database\QueryException:SQLSTATE[42S22]:列不可用 在“字段列表”中找到:1054未知列“”(SQL:插入到
collection\u user\u网页
(``,
collection\u id
)值(1,1))


是否可以创建这种类型的关系?还是我遗漏了什么?

Pivot
中,
$foreignPivotKey
的默认值不起作用,您必须明确指定它:

公共函数集合(){
返回$this->belongTomany('App\Collection','Collection\u user\u webpage','user\u webpage\u id');
}

您的收藏和用户主键是什么?您已经说过多对多关系赌注。用户网页和集合,但您的
UserWebpage
正在扩展
Pivot
模型类?为什么?@usrnotfind My Collection主键是Collection\u id,对于UserWebpage,它是user\u webpage\u id。@Wreigh我想使用Pivot模型类。UserWebpage表示一个关系,为了在另一个关系中使用它,我为它创建了一个Pivot模型类。在中的Laravel文档中,在“定义自定义中间表模型”下对其进行了描述。谢谢,这个版本适合我。基本上,我必须在Collection类的userWebpages方法中这样做。在指定了第3个和第4个参数之后,我能够插入集合实例和UserWebpage实例之间的关系。