php类对象无法转还子符串问题,PHP Laravel错误:类stdClass的对象无法转换为字符串...

我正在为使用Laravel的应用程序开发功能,但遇到了我无法解决的奇怪错误.我将以下代码作为控制器的辅助函数,在添加对以下函数的调用之前,该函数运行良好:

protected function f($p){

$cIds = $cs->select('cs.id')->get();

$cs = DB::table('cs')

->select('cs.id')

->join('pucs', 'cs.id', '=', 'pucs.c_id')

->where('pucs.p_id', '=', (string)$p->id)

->whereIn('cs.id', $cIds)->lists('cs.id');

return $cs;

}

其中pucs具有cs的外键和称为p_id的列,我只想返回p_id = $p-> id的行. $p是先前查询的结果,而$p-> id是一个整数(我认为吗?).当我在网站上打开页面时,出现以下错误:

Missing argument 1 for Illuminate\Database\Query\Builder::lists()

是否有人对导致此问题的原因有任何见解?我最初的想法是$p-> id是一个int并导致了问题,因此我使用(string)运算符将其强制转换为字符串,并尝试使用strval($p-> id).我没主意了.

更新:使用pluck(‘cs.id’)会给出相同的错误.我以为问题可能是(string)$p-> id,但是当我注释掉-> where(‘pucs.p_id’,’=’,(string)$p-> id)时,我仍然得到同样的问题.作为参考,我在同一帮助文件中有非常相似的代码行:

$bIds = $bs->select('bs.id')->get();

$bs = DB::table('bs')

->whereIn('bs.id', $bIds)->lists('bs.id');

我很确定它以前可以工作,即使我在早期代码中遇到错误时也是如此,但是现在它也不起作用.

无论如何,我这样做的原因是因为我有这些笨拙的表已与其他表连接并合并,然后从中选择了一个cs.id(或bs.id)子集,我只想要结果原始表.另外,我得到一些奇怪的错误,因为MYSQL显然在按ID排序联合表时遇到问题?

解决方法:

当使用lists()时,您需要传递想要其值的键的名称.通常,您将在此处调用get()而不是list(),但是如果您调用list(‘cs.id’),则应该获取匹配的cs.id的数组.

标签:laravel,sql,php

来源: https://codeday.me/bug/20191111/2021293.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值