当前位置: 首页 > 知识库问答 >
问题:

laravel 6. x与雄辩和数组工作-避免在Foreach内查询

白星腾
2023-03-14

嗨,我有很多雄辩的查询Foreach循环在我的应用程序,我试图避免这种做法可能。

示例:

$statuses = Statuses::get(); // or Statuses::all(); // What's the difference because I use them mixed?

$statusList = [];

foreach ($statuses as $status) {
    $statusList[$status->id] = $status->status_title;
} // How do I just get my array of the id => status_title in single Eloquent query?

// Return $statusList to use in my select drop-down...

我使用foreach获得我想要的东西的领域还有很多,其中一些我可能会查询10到100次——以下是我现在根据不同的堆栈溢出答案尝试的内容:

$statuses = $statuses->map->only(['id', 'status_title']);

但这并没有给出我需要的数组格式,我需要一维[id]=

谢谢

非常感谢。尝试此操作会将主键作为数组键,将状态标题作为值,而不使用列名。抱歉,我刚刚意识到这个例子在foreach中没有查询。

我还有一个问题我不知道怎么做:现在我想连接一些列,如:

$statusList = Status::pluck('status_title', 'status_outcome', 'id')); 
$array = $statusList->all();
what I'm trying to do is [id] => [status_title . ' ' . status_outcome] 

所以基本上我把我的数组键作为主键ID,值作为连接的标题和结果?

请帮帮我,我有问题-

Statuses::select("CONCAT('status_title', ' - ', 'status_outcome') AS status, id")->pluck('status', 'id')->all(); 

试图获取数组,但在我的不同查询中,pull()的行为不同,有时会出错。我还尝试提取超过2列,它会给出一个错误,例如。

Statuses::pluck('status_title', 'status_outcome', 'id')->all() I also tried ->get() and ->toArray()

共有2个答案

晏正豪
2023-03-14

使用mysql conat()和pluck()Laravel Helper会做你想要的技巧:

$statuses = Statuses::select("CONCAT('status_title', ' ', 'status_outcome') AS status, id")->get()->pluck('status', 'id');
翟誉
2023-03-14

这就是pluck方法的作用:

$statusList = Status::pluck('status_title', 'id');

这将获得一个以“status\u title”作为值的由“id”键入的集合。如果要将该集合转换为集合上的数组调用all()

$array = $statusList->all();

Laravel 6. x文档-查询-检索结果-检索列值列表pluck

此外,您拥有的不是循环中的任何查询。您只需查询一次,然后在示例中迭代结果。

如果您需要使用某些函数(并非所有支持的DBs都具有Conconat):

$list = Status::selectRaw("concat(status_title, ' - ', status_outcome) as con, id")
    ->pluck('con', 'id');
 类似资料:
  • 嘿,伙计们,我是拉威尔的新朋友。我有这张桌子 我如何能够获取每个科目的is_correct列计数? 谢谢伙计们!

  • 我有以下雄辩的模型: 用户id 邮政编码 评论| id |发布| id |用户| id 使用eloquent,如何获取特定用户尚未发表评论的所有帖子? 到目前为止,我试过: 在模范岗位: 在模型注释中:

  • Laravel Eloquent的save()方法实质上是执行查询生成器的工作吗? 查询生成器: 雄辩的: 如果这是真的,那么Eloquent的也是如此吗?我正在看Laravel的官方视频教程,我看到作者在控制器中使用了雄辩的和。这就是查询生成器和雄辩的区别吗?我们可以使用雄辩的内部控制器?

  • 我已在模型中设置变量。我想测试功能,但出现以下错误: SQLSTATE[42S22]:未找到列:“字段列表”中的1054未知列“\u方法”(SQL:updateset=临时水生领袖,=放置,=2,=这是我的描述,=2014-05-29 17:05:11其中客户id=1和=2) 当我的fillable没有这个参数时,为什么要对大喊大叫?我的更新功能是:

  • 我有一个小问题,当我试图通过使用雄辩的模型在列中创建_来排序记录时。订单是按日期而不是按时间进行的。例如,如果我有3条记录的值为created_at: > 2017-07-04 07:16:33 2017-07-04 05:35:01 2017-07-04 05:27:48 使用orderby('created_at','desc')或'asc'时,我有相同的输出。但是,如果我有,订购就可以了 2

  • 嗨,我的数据库结构如下: 表:分析 现在我想批量更新数据。例如,我想选择用户_id=1的数据以及2016-03-01和2016-03-20之间的日期。然后我想将结果中得到的所有记录的列从0更新为1。 我所做的工作如下: 但这不起作用,也没有显示任何错误。请让我知道在雄辩的帮助下我能做什么。提前谢谢。 我也看到了StackoverFlow中的其他问题,但答案建议运行foreach循环,这是我不想要的