Php 在雄辩的模型上使用select“原因”;未定义的偏移量:0“;
我是拉雷维尔的新手。我已经编写了如下代码。当我添加Php 在雄辩的模型上使用select“原因”;未定义的偏移量:0“;,php,laravel,laravel-5,php-7,Php,Laravel,Laravel 5,Php 7,我是拉雷维尔的新手。我已经编写了如下代码。当我添加select时,它会导致一个错误,显示未定义的偏移量:0 当我有两条以上的记录时,即使我注释掉了selectpart,它也会导致相同的错误 当我使用toSql()检查查询时,它非常好 因此,当我在返回之前对$clientDrivers使用dd()时,输出如下。(看起来也不错) 我的代码有什么问题 任何建议或建议都将被告知 编辑:我发现问题在于驾驶员模型中的$appends。为什么$appends会导致此问题 解决方案:我已经修复了用于$appen
select
时,它会导致一个错误,显示未定义的偏移量:0
当我有两条以上的记录时,即使我注释掉了select
part,它也会导致相同的错误
当我使用toSql()
检查查询时,它非常好
因此,当我在返回之前对$clientDrivers使用dd()
时,输出如下。(看起来也不错)
我的代码有什么问题
任何建议或建议都将被告知
编辑:我发现问题在于驾驶员模型中的$appends
。为什么$appends
会导致此问题
解决方案:我已经修复了用于$appends
的驱动程序模型getBankAttribute
,它工作正常
这是我的密码:
型号
public function drivers() {
return $this->belongsToMany('App\Model\User\Driver', 'ClientDriver', 'client_id', 'userdriver_id');
}
控制器
$client = ClientModel::findOrFail($id);
$select = ['UserDriver.name as userdriver_name', 'UserDriver.phone_number as userdriver_phone_number'];
$clientDrivers = $client->drivers()
->select($select) // this does not work. If this is commented out it works perfectly fine.
->get();
return response($clientDrivers, 200);
尽职调查结果($clientDrivers)
您需要在
$select
中传递字符串。您当前正在其中传递数组。
更改您的$select
,如下所示:
$select = "'UserDriver.name as userdriver_name', 'UserDriver.phone_number as userdriver_phone_number'";
您可以使用获取客户端的关联驱动程序
$client = ClientModel::where('id',$id)
->with('drivers:name,phone_number')
->get();
$clientDrivers = $client->drivers;
return response($clientDrivers, 200);
在$select变量中传递字符串,而不是数组。首先,您需要更改
['UserDriver.name作为UserDriver\u name','UserDriver.phone\u number作为UserDriver\u phone\u number']
至“UserDriver.name作为UserDriver\u name”,“UserDriver.phone\u number作为UserDriver\u phone\u number”
。我认为错误发生在其他地方,请共享更多代码,please@Desai我在其他地方使用过数组形式,它们工作得很好。我也尝试了你的解决方案,但没有成功
$client = ClientModel::where('id',$id)
->with('drivers:name,phone_number')
->get();
$clientDrivers = $client->drivers;
return response($clientDrivers, 200);