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

一对多关系-Laravel

艾英范
2023-03-14

在我的应用程序中,用户可以拥有许多产品。现在,我正在尝试显示每个显示产品的用户电话号码。

在my products(我的产品)表中,有一列user\u id,用于相应的用户<这就是我的模型的样子

用户模型

public function products()
{
      return $this->belongsTo('Models\Database\User','user_id');    
} 

产品型号

类产品扩展BaseModel{

protected $fillable = ['user_id','type', 'name', 'slug', 'sku', 'description',
    'status', 'in_stock', 'track_stock', 'qty', 'is_taxable', 'page_title', 'page_description'];

 // protected $guarded = ['id'];

public static function getCollection()
{
    $model = new static;
    $products = $model->all();
    $productCollection = new ProductCollection();
    $productCollection->setCollection($products);
    return $productCollection;
}

public function users()
{
    return $this->hasMany('\Models\Database\Product');
    //->withTimestamps();
}



public function categories()
{
    return $this->belongsToMany(Category::class);
}

public function reviews()
{
    return $this->hasMany(Review::class);
}

public function prices()
{
    return $this->hasMany(ProductPrice::class);
}









public function orders()
{
    return $this->hasMany(Order::class);
}

public function users()
{
      return $this->hasMany('Models\Database\Product');
}

在我看来,这就是我试图获取相应用户的电话号码的方式

<p>{{$product->users->phone}}</p>

但我得到一个错误,比如

SQLSTATE[42S22]:未找到列:1054未知列“产品”。where子句中的product_id'(SQL:select*fromproductswhereproduct_id=1且productsproduct_id不为空)

共有2个答案

阳兴朝
2023-03-14

你的关系模式颠倒了,

改变它们:

在用户模型中:

public function products()
{
      return $this->hasMany('Models\Database\Product');
} 

在您的产品模型中:

public function user()
{
      return $this->belongsTo('Models\Database\User','user_id');    
}

然后您可以访问以下属性:

<p>{{$product->user->phone}}</p>

链接到文档

易俊远
2023-03-14

你应该做:

用户模型

public function products()
{
      return $this->hasMany('Models\Database\Product');    
} 

产品型号

public function user()
{
      return $this->belongsTo('Models\Database\User');
}

在您的刀片中:

{{ $product->user->phone }}
 类似资料:
  • 这是项目迁移 这是时间表 这样用户就可以迁移了 这是我的项目模型 这是我的时间表模型: 这是我的用户模型 现在,我从项目返回我的查询 这是可以的,但user_id用户在timesheets.user_id我不能得到它的时间表,并得到它 此控制器按时间表中的项目id返回项目和时间表,但时间表中的用户id我不知道如何将其输入系统

  • 在数据库表之间,绝大多数的关系很可能是一对多的关系,一个表中的记录有可能与另一个表中的许多记录相关。 创建一对多关系的过程与创建一对一关系完全相同。 让我们先通过单击设计 选项卡上清除布局 选项清除布局。 再添加另一个表,如以下屏幕截图所示。 点击保存图标并输入作为表名,然后转到关系视图。 点击显示表选项,然后选择两个表: 和 。如下所示 - 添加和并关闭显示表格对话框。 我们再次执行相同的操作过

  • 我在hibernate中搜索建立关系的各种可能性,遇到了下面的代码片段

  • 对于我正在构建的一个类似论坛的网站,我有PHP类'user'和'post‘。用户有一个帖子数组。如何与关系数据库中的连接相似?在“post”上有一个外键,指向一个“user”?这对我来说是有意义的,因为这是一对一的关系,而“user”到“post”是一对多的,就我所见。欢迎有任何想法-谢谢!

  • 问题内容: 假设我有一个具有两个不同的一对多关系的对象。很像: 和 假设我的对象有两个与这两个对象相关的列表。 我已经阅读了以下示例:http : //forum.springsource.org/showthread.php?50617-rowmapper -with-one-to-many- query,其中说明了如何使用单个一对多关系来执行此操作。为了您的方便,这里是替代: 我认为这并不涉及

  • 问题内容: 所以我很惊讶在Google和stackoverflow上进行搜索不会返回更多结果。 在OO编程中(我正在使用Java),如何正确实现一对多关系? 我有一堂课。我的申请是针对一家虚构的公司,该公司可以为客户完成工作。我当前的实现是使该类与该类无关,根本没有对其的引用。本类使用的集合和方法来保持,检索和修改有关已被分配和/或完成客户作业的信息。 问题是,如果我想找出特定客户针对哪个客户,该

  • 实现了一对多的关系,它运行良好。 我的问题是当我运行下面的查询时,如果表有100个员工行,每个员工有两个部门。数据库查询被调用了101次,因为对每个员工都是调用部门查询,要完成调用全部100行需要很长时间,有没有人可以提出替代的解决方案? 输出XML: