suchen

Heim  >  Fragen und Antworten  >  Hauptteil

Laravel Eloquent zugeordneter Funktionsname

<p>Ich habe zwei Tabellen, nämlich „Beiträge“ und „Kategorien“. Die Beziehung zwischen „Beiträgen“ und „Kategorien“ ist n:1. Daher lautet der Code im Klassenmodell „Post“ wie folgt: </p> <pre class="brush:php;toolbar:false;"><?php Namespace AppModels; verwenden Sie IlluminateDatabaseEloquentFactoriesHasFactory; verwenden Sie IlluminateDatabaseEloquentModel; Die Klasse Post erweitert das Modell { benutze HasFactory; protected $guarded = ['id']; öffentliche Funktionskategorie() { return $this->belongsTo(Category::class); } }</pre> <p>Mit diesem Code wird die Anwendung erfolgreich ausgeführt. </p><p>Das Problem entsteht, wenn ich versuche, den Namen der Kategoriefunktion in „Kategorien“ zu ändern und auf den Kategorienamen des Beitrags wie folgt zuzugreifen: </p><p> <code>Post::first()->categories->name</code>, laravel gibt einen Fehler wie diesen aus <code>Versuch, die Eigenschaft „name“ auf null in D:BelajarProgramCODINGANLaravelapplicationcoba-laraveleval() zu lesen 'd code.</code></p> <p>(bearbeitet</p> <p>Wenn der Name der Eloquent-Funktion „category“ lautet, gibt „Post::first()->category“ die Kategorie des Beitrags zurück. Wenn ich jedoch versuche, den Funktionsnamen in „Kategorien“ zu ändern und mit „Post::first()->categories“ darauf zuzugreifen, wird null zurückgegeben. </p> <p>)</p> <p>Ich habe versucht, den Namen der Eloquent-assoziierten Funktion im Kategorieklassenmodell in einen zufälligen Namen zu ändern, aber ich kann immer noch darauf zugreifen und Laravel meldet keine Fehler. Der Code des Kategorieklassenmodells lautet wie folgt: </p> <pre class="brush:php;toolbar:false;"><?php Namespace AppModels; verwenden Sie IlluminateDatabaseEloquentFactoriesHasFactory; verwenden Sie IlluminateDatabaseEloquentModel; Die Klassenkategorie erweitert das Modell { benutze HasFactory; protected $guarded = ['id']; öffentliche Funktionsbeiträge(){ return $this->hasMany(Post::class); } }</pre> <p>Kann mir jemand helfen? Warum kann ich den Eloquent-Funktionsnamen im Kategorieklassenmodell ändern, aber nicht im Postklassenmodell? </p>
P粉729198207P粉729198207495 Tage vor408

Antworte allen(1)Ich werde antworten

  • P粉330232096

    P粉3302320962023-07-24 00:30:50

    进行以下操作应该可以解决问题:

    public function categories()
    {
        return $this->belongsTo(Category::class, 'category_id', 'id');
    }

    Antwort
    0
  • StornierenAntwort