Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/gwt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 在雄辩的模型上使用select“原因”;未定义的偏移量:0“;_Php_Laravel_Laravel 5_Php 7 - Fatal编程技术网

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);