当前位置: 首页 > 知识库问答 >
问题:

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

须旭
2023-03-14

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

namespace App;

use Illuminate\Database\Eloquent\Relations\Pivot;

class UserWebpage extends Pivot
{
    public function collections(){
        return $this->belongsToMany('App\Collection', 'collection_user_webpage');
    }
}

我也有个模特叫收藏

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');
    }
}

我试图在用户网页和收藏之间建立多对多的关系。基于我发现的这个SO问题,我知道这样的事情应该是可能的: Laravel:如何使用多个数据透视表关系

我的问题是:

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

插入关系的代码:

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))

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


共有1个答案

阎昌勋
2023-03-14

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

public function collections(){
    return $this->belongsToMany('App\Collection', 'collection_user_webpage', 'user_webpage_id');
}
 类似资料:
  • 问题内容: 假设我有一个模型Car,该模型在 ViewModel1中 实例化为以下初始属性: ViewModel1 然后,我需要在下一个视图控制器中完成汽车的其他信息。遵循MVVM时,在视图控制器之间传递模型的 正确 方法是什么? 使用MVC,操作很简单,因为视图可以引用模型: 以下是对该问题的伪尝试,但是我给人的印象是视图模型应该是私有的,并且只能由单个视图控制器访问。因此,以下尝试对我来说似乎

  • 模型(Model)之间存在各种各样的关系,如:一对一(One-To-One )、一对多(One-To-Many)等。模型间的关系本质上是对其代表的数据库中表之间的关系描述,通过这些关系可以实现数据库中表之间主/外键约束的创建。查询时也可以基于这些关系,生成在数据库中执行的连接查询或复合查询SQL语句。 关系/关联的使用 1.1 一对一(One-To-One)关联 1.2 一对多(One-To-Ma

  • 问题内容: 我是 AngularJs的 新手。谁能说出ng-model和data-ng-model之间的区别? 与ng-model 使用data-ng-model 问题答案: 最佳实践:建议使用破折号分隔格式(例如ng-bind用于ngBind)。 如果要使用HTML验证工具,则可以改用数据前缀版本(例如ngBind的data-ng-bind)。 出于遗留原因,可以接受上面显示的其他表格,但是我们

  • 本文向大家介绍瀑布模型和RAD模型之间的区别,包括了瀑布模型和RAD模型之间的区别的使用技巧和注意事项,需要的朋友参考一下 瀑布模型 瀑布模型是经典的软件开发模型,其中软件开发的每个阶段都以线性方式完成。一旦一个阶段结束,则下一阶段开始,最后标记为软件开发完成。瀑布模型适用于较小的项目,并且只有一个开发周期。以下是这些阶段: RAD模型 RAD模型或快速开发模型也称为软件开发的增量模型。它允许在任

  • 本文向大家介绍V模型和瀑布模型之间的区别,包括了V模型和瀑布模型之间的区别的使用技巧和注意事项,需要的朋友参考一下 瀑布模型和V模型都是软件行业中最广泛实践的开发方法类型。这两种模型都是更好跟踪的实践,并且以系统的方式进行应用程序开发。 根据两个模型之间步骤或阶段的类型,我们可以区分V模型和WaterFall模型,如下所示- 序号 键 V型 瀑布模型 1 定义 V-模型是一种开发模型,其中,整个模

  • 本文向大家介绍螺旋模型和瀑布模型之间的区别,包括了螺旋模型和瀑布模型之间的区别的使用技巧和注意事项,需要的朋友参考一下 螺旋模型和瀑布模型都是软件行业中最广泛实践的开发方法类型。这两种模型都是更好跟踪的实践,并且以系统的方式进行应用程序开发。 根据两个模型之间的步骤或阶段类型,我们可以区分螺旋模型和瀑布模型,如下所示: 序号 键 螺旋模型 瀑布模型 1 定义 螺旋模型是将整个模型分为多个子开发阶段