Betrachten Sie diese Modelle:Ignorieren Feld in ausgewählten Laravel Eloquent
Flugmodell
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Flight extends Model
{
/**
* The attributes that are mass assignable.
*
* @var array
*/
protected $fillable =
[
'userID'
];
public function user()
{
return $this->belongsTo('App\User', 'userID');
}
}
Benutzermodell
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class User extends Model
{
/**
* The attributes that are mass assignable.
*
* @var array
*/
protected $fillable =
[
'userID', 'username', 'address'
];
}
ich eine Spalte überspringen wollen, wenn ich versuche, eifriges Laden verwenden. Ich will nur wissen, ob so etwas wie IGNORE_FIELD Funktion existiert, so kann ich so etwas tun:
$flightUser = Flight::with(['user', function ($q)
{
$q->ignoreField('user.address');
}])
Ich weiß, ich könnte das Adressfeld in die verborgene Array innerhalb des Benutzermodell schieben
protected $hidden = ['address'];
oder tun Sie die $q->select('fields')
und nicht einschließlich der Adresse Feld, aber meine wirkliche Zweifel ist, ob Laravel eine Funktion wie die oben eingegeben hat.
HINWEIS
ich ein Feld weiß, ist von einem Abkommen nicht so groß. Aber meine Frage ist eine vereinfachte Version meines wirklichen Problems.
Ja, das würde den Trick tun. Aber ich frage mich immer noch, ob Laravel so eine Funktion hat. Ich denke nicht – ggderas
Nein, nicht meines Wissens. Ich habe vorher nach einem veritablen 'removeSelect()' gesucht, aber abgesehen von meiner Lösung oder manuell mit Auflistungsmethoden entfernen, gibt es in laravel keine solche Funktion. Ehrlich gesagt, wenn es so wichtig ist, ist es vielleicht besser, keine eloquente Beziehung zu verwenden und nur zwei Abfragen zu schreiben. –