在eloquent模型上使用select会导致“Undefined offset:0”

时间:2018-01-04 06:19:08

标签: php laravel laravel-5 php-7

我是laravel的新手。我写了如下代码。当我添加<ListView android:id="@+id/task_list_view" android:layout_width="368dp" android:layout_height="475dp" android:layout_marginEnd="8dp" android:layout_marginStart="8dp" android:layout_marginTop="8dp" android:defaultFocusHighlightEnabled="true" android:divider="@color/borderColor" android:dividerHeight="1px" android:gravity="center_horizontal|top" android:theme="@style/MyPicker" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent" /> 时,会导致错误select

即使我注释掉了undefined offset: 0部分,当我有两个以上的记录时也会导致同样的错误。

当我使用select检查查询时,完全没问题。

因此,当我在toSql()之前在$ clientDrivers上使用dd()时,输出如下。 (看起来也很好)

我的代码会出现什么问题?

任何建议或建议都会被贬低。

编辑:我发现问题是驱动程序模型中的return。为什么$appends会导致问题?

解决方案:我修复了用于$appends的驱动程序模型getBankAttribute并且工作正常。

这是我的代码:

模型

$appends

控制器

public function drivers() {
    return $this->belongsToMany('App\Model\User\Driver', 'ClientDriver', 'client_id', 'userdriver_id');
}

dd的结果($ clientDrivers)

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

2 个答案:

答案 0 :(得分:1)

您需要在#!/usr/bin/env pythons from twython import Twython from time import sleep import sqlite3 db = sqlite3.connect('./mydb') cursor = db.cursor() cursor.execute ('''SELECT app_key, app_secret, oauth_token, oauth_token_secret FROM users''') for row in cursor: twitter = Twython('{0}, {1}, {2}, {3}'.format(row[0], row[1], row[2], row[3])) search = twitter.search(q = '#peace', count = 10) tweets = search['statuses'] for tweet in tweets: b = tweet['id'] print(b) twitter.retweet(id = b) sleep(60) db.close() 中传递字符串。您当前正在传递数组。 更改您的$select,如下所示:

$select

答案 1 :(得分:0)

您可以使用with()获取客户端的关联驱动程序

$client = ClientModel::where('id',$id)
            ->with('drivers:name,phone_number')
            ->get();
$clientDrivers = $client->drivers;

return response($clientDrivers, 200);