在我的应用程序中,用户可以拥有许多产品。现在,我正在尝试显示每个显示产品的用户电话号码。
在我的产品表中,各个用户都有一列user_id
这就是我的模型的样子
用户模型
public function products()
{
return $this->belongsTo('Models\Database\User','user_id');
}
产品型号
类Product扩展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子句'中的'products.product_id'(SQL:select * from
products
其中products
。product_id
= 1和products
。product_id
不是 空)
答案 0 :(得分:3)
你应该这样做:
用户模型
public function products()
{
return $this->hasMany('Models\Database\Product');
}
产品型号
public function user()
{
return $this->belongsTo('Models\Database\User');
}
在你的刀片中:
{{ $product->user->phone }}
答案 1 :(得分:1)
你的关系模型倒置了,
改变它们:
在您的用户模型中:
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>
链接到Docs