【问题标题】:How to get rows that has certain columns containing same values using laravel如何使用laravel获取某些列包含相同值的行
【发布时间】:2022-01-05 13:44:46
【问题描述】:

我有一个用户表,客户可以在其中注册自己或致电公司进行注册,以防流程对他们来说很复杂,我想组织客户列表以便拥有:一页中的自我注册客户,和员工在另一个页面注册的客户,我的应用程序使用的是 Laravel/MySQL,但是查询太复杂,我无法自己做

这是我使用 eloquent 尝试过的:

$clients = User::where([['role','Client'],['created_by','id']])->get();

此查询旨在选择由同一个人创建的行,换句话说:如果我通过表单注册自己,我的行将如下所示:

id: 1
created_by:1 

但此查询无效。

我可以选择所有行并在我的视图中对每一行进行 if 测试,但这不是最佳的并且看起来像是作弊,我希望能够理解 MySQL 中的完美解决方案。为了发展我的技能。

【问题讨论】:

  • 不会['created_by','id'] 查找具有字符串 idcreated_by 的数据吗?

标签: mysql laravel database eloquent laravel-8


【解决方案1】:

你可以使用 whereColumn,这在 laravel 文档的 Additional Where Clauses 部分中有描述。
对于role,您可以使用普通的where

$clients = User::where('role', 'Client')->whereColumn('created_by', 'id')->get();

使用您的代码,您正在搜索 created_by 具有值 id 的用户。

【讨论】:

  • 完美它对我有用非常感谢你,你知道mysql中的解决方案吗?只是为了了解更多,因为我也没有在mysql中找到答案
  • SELECT * FROM users WHERE role = 'Client' AND created_by = id;
【解决方案2】:

试试这个

$clients = User::where(['role'=>'Client','created_by'=>'id'])->get();

【讨论】:

  • 虽然这段代码 sn-p 可以解决问题,但它没有解释为什么或如何回答这个问题。请include an explanation for your code,因为这确实有助于提高您的帖子质量。请记住,您是在为将来的读者回答问题,而这些人可能不知道您提出代码建议的原因。
猜你喜欢
  • 1970-01-01
  • 2016-09-28
  • 1970-01-01
  • 1970-01-01
  • 2022-11-12
  • 1970-01-01
  • 2014-03-20
  • 2015-09-30
  • 2016-11-05
相关资源
最近更新 更多