【问题标题】:One to Many Relationship - Laravel & Mysql一对多关系 - Laravel & Mysql
【发布时间】:2018-07-16 02:24:10
【问题描述】:

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

在我的产品表中,有一个列 user_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 子句'中的'products.product_id' (SQL: select * from products 其中products.product_id = 1 和products.product_id 不是 空)

【问题讨论】:

  • 显示您的产品型号代码
  • 去掉User模型的belongsTo关系中的'user_id'再试试!
  • @SapneshNaik,请检查我的更新
  • @HirenGohel,我刚刚尝试过,但结果相同
  • 在产品的 belongsTo 关系中添加user_id,如下所示:public function user() { return $this-&gt;belongsTo('Models\Database\User','user_id'); } ,然后在视图中使用&lt;p&gt;{{$product-&gt;user-&gt;phone}}&lt;/p&gt;

标签: php mysql laravel


【解决方案1】:

你应该这样做:

用户模型

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

产品型号

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

在你的刀片中:

{{ $product->user->phone }}

【讨论】:

    【解决方案2】:

    你的关系模型颠倒了,

    改变它们:

    在您的用户模型中:

    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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-06-15
      • 2018-09-27
      • 2017-12-24
      • 2018-04-20
      • 1970-01-01
      相关资源
      最近更新 更多