【问题标题】:Laravel Eloquent Relation Column Not Found未找到 Laravel Eloquent 关系列
【发布时间】:2020-03-05 20:13:25
【问题描述】:

我在 Laravel 用户中有两个模型,订单用户可以有多个订单,一个订单只能有一个用户。

我已经定义了一对多关系,但是在执行这个查询时它给了我一个未知的列错误:

App\Order::find(1)->users;

我正在使用 Laravel 最新版本。

//This is Order Model

class Order extends Model
{

    public function users()
    {
        return $this->hasOne(User::class);
    }
}


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

【问题讨论】:

  • 你是如何定义你的表的?显示您的架构。

标签: php laravel eloquent relationship eloquent-relationship


【解决方案1】:

每个订单属于一个用户,将此添加到订单模型:

public function user()
{
    return $this->belongsTo(User::class);
}

并获取用户:

    App\Order::find(1)->users()->get()

【讨论】:

  • 欢迎您,如果有效,您为什么给我否定?
  • 虽然他只有一分,但他不能给出负数。感谢您的回答。
【解决方案2】:

对于 laravel 中的一对多关系,您必须定义双方的关系如下:

用户模型

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

现在我们必须将上述关系的逆定义如下:

订单模式

class Order extends Model
{

 public function user()
  {
    return $this->belongsTo(User::class);
  }
}

【讨论】:

    【解决方案3】:

    尝试添加括号:

    App\Order::find(1)->users()->get()

    这应该可以解决您的错误。

    【讨论】:

    • 这将返回一个查询构建器关系,而不是集合。
    猜你喜欢
    • 2017-05-10
    • 1970-01-01
    • 2016-10-15
    • 1970-01-01
    • 2015-05-25
    • 2014-01-15
    • 2017-04-02
    • 2016-08-13
    相关资源
    最近更新 更多