使用Laravels Eloquent与数据库视图


Using Laravels Eloquent with database views

我有两个数据库表,支出收入,我创建了一个MySQL视图,transactions基本上是两个表之间的UNION,选择我感兴趣的字段。

事务视图包含以下列:

  • transaction_id
  • user_id
  • 金额
  • 注释
  • 事务类型
  • 更新日期
  • 创建日期

我为视图创建了一个Eloquent模型,名为Transactions。

问题是当我想根据某些条件检索事务时。例如,我想获取用户的所有交易。通常,如果事务是一个表,我会定义一个外键关系,然后简单地调用$user->hasMany('App'Models'Transaction')

由于视图不可能使用外键,我尝试使用"where"方法:Transaction::where('user_id', $user->id)。这个查询不返回任何内容,我测试的任何其他查询也不返回。唯一返回数据的方法是Transaction::all(),但这对我没有太大帮助。

我做错了什么?

对于Eloquent中的where语句,您必须以get结束,请尝试以下操作:

$transactions = Transaction::where('user_id', $user->id)->get();