【问题标题】:Using Laravels Eloquent with database views使用 Laravel Eloquent 和数据库视图
【发布时间】:2016-08-13 13:53:56
【问题描述】:

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

交易视图包含以下列:

  • transaction_id
  • user_id
  • 金额
  • 注意
  • transaction_type
  • updated_at
  • created_at

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

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

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

我做错了什么?

【问题讨论】:

  • 您想通过查询获取用户信息吗?
  • 不,我想获取具有特定 user_id 的所有交易。假设用户 ID 为 3,则等效查询为 SELECT * FROM transactions WHERE user_id = 3

标签: php mysql laravel eloquent views


【解决方案1】:

对于 Eloquent 中的 where 语句,你必须以 get 结尾,试试这个:

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

【讨论】:

  • Transaction::where('user_id', $user->id) 返回表之间的关系,而Transaction::where('user_id', $user->id)->get() 返回对象集合 :-)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-06-24
  • 1970-01-01
  • 1970-01-01
  • 2016-05-25
  • 2021-03-21
  • 2017-07-23
  • 1970-01-01
相关资源
最近更新 更多