一对多关系 - Laravel& Mysql的

时间:2018-02-06 05:21:45

标签: php mysql laravel

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

在我的产品表中,各个用户都有一列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   其中productsproduct_id = 1和productsproduct_id不是   空)

2 个答案:

答案 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