Ich kann dies mit einem select an die Arbeit:Laravel 5.2 Eloquent Verwendung von Select in Eifrig Loaded Abfrage
User::whereNotIn('id', $ids)
->select(['id', 'email'])
->with('profile')
->get();
Ich möchte nur ein paar Tasten in einem Benutzerprofil abzurufen, die mit Spannung geladen wird. Ich möchte so etwas wie dies tun:
User::whereNotIn('id', $ids)
->select(['id', 'email'])
->with(['profile', function ($query) {
$query->select(['id', 'user_id', 'first_name', 'last_name']);
}])->get();
Oder:
User::whereNotIn('id', $ids)
->select(['id', 'email'])
->with(['profile', function ($query) {
$query->addSelect(['id', 'user_id', 'first_name', 'last_name']);
}])->get();
Aber dies scheint nicht zu arbeiten, und ich bekomme diese Fehlermeldung:
ErrorException in Builder.php line 1034:
explode() expects parameter 2 to be string, object given
Geworfen in /Illuminate/Database/Eloquent/Builder.php:
/**
* Parse the nested relationships in a relation.
*
* @param string $name
* @param array $results
* @return array
*/
protected function parseNestedWith($name, $results)
{
$progress = [];
// If the relation has already been set on the result array, we will not set it
// again, since that would override any constraints that were already placed
// on the relationships. We will only set the ones that are not specified.
foreach (explode('.', $name) as $segment) { // <--- line 1034
$progress[] = $segment;
if (! isset($results[$last = implode('.', $progress)])) {
$results[$last] = function() {
//
};
}
}
return $results;
}
Gibt es einen Weg, dies zu erreichen?
Hallo geladen werden, habe ich versucht, aber ich bekomme diesen Fehler: 'ErrorException in Builder.php Zeile 1034: explode() erwartet Parameter 2 als String, Objekt gegeben ' – mtpultz
aktualisiert, ich habe nicht bemerkt, Sie verwenden Array-Notation für eifriges Laden – naneri
Oh Mann, du' Re ein Lebensretter! Ich hätte nie herausgefunden, dass die Fremdschlüsselspalte hinzugefügt werden muss, und ich habe die Array-Notation vermasselt. Ich habe '=>' vermisst. – mtpultz