gpt4 book ai didi

mysql - Laravel:DB 查询返回 stdclass 而不是数组

转载 作者:行者123 更新时间:2023-11-29 06:31:27 24 4
gpt4 key购买 nike

我有以下内容:

$srv = DB::table('ads')
->join('ad_service','ad_service.ad_id', '=', 'ads.id')
->select('ads.id')
->whereIn('ads.id',[45789,46531])
->get();
Log::info($srv);

日志信息给了我

  49 =>   stdClass::__set_state(array(
'id' => '46531',
)),
50 =>
stdClass::__set_state(array(
'id' => '46531',
)),
51 =>
stdClass::__set_state(array(
'id' => '46531',
)),

我想要什么:
返回条目一次,“ad_service”表中有多个具有此 id 的条目,我想检索一次。它是多对多的关系。也是最大的问题,这个 stdclass 设置状态是什么?
我期待这样的事情:

array('id' => '46531', ...,)

谢谢大家。

编辑:使用 Eloquent 解决了这个问题:

$srv = Ad::whereIn('id',[46696,48982,...MORE IDS HERE])->get();

这返回的不是一个对象,而是一个集合本身。我真的不知道@ourmandave“你得到一个带有std类对象的集合”是什么意思,我的意思显然我可以看到这一点,但我真的不知道为什么我得到它,以及为什么我使用 Eloquent 如我所愿地得到它。对此的任何答案将不胜感激:为什么 DB::返回这个 std 类内容,而 Eloquent 返回“想要的格式”?

最佳答案

如果您只想要一条记录,您可以尝试:

$srv = DB::table('ads')
->join('ad_service','ad_service.ad_id', '=', 'ads.id')
->select('ads.id')
->whereIn('ads.id',[45789,46531])
->first();

将 get 更改为 first()。您获取多条记录的原因是 get() 返回广告的 laravel 集合

关于mysql - Laravel:DB 查询返回 stdclass 而不是数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55984367/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com