sql >> Databáze >  >> RDS >> Mysql

Laravel patří k házení nedefinované chyby

Po pomoci prostřednictvím chatu byl problém v tom, že existoval sloupec nazvaný group a metoda vztahu se také nazývala group , takže hodnota sloupce tabulky měla přednost před metodou vztahu.

Přejmenování metody vztahu nebo group na něco jako group_id jsou obě vhodná řešení (doporučoval bych group_id trasa).

Původní odpověď:

Skupinu získáte prostřednictvím magické vlastnosti, nikoli přímo z metody.

echo User::find(1)->group->name;

Pokud načtete group() metoda, vrátí objekt vztahu, neprovede žádné dotazy a načte související objekt.

Eloquent také učiní předpoklady o tom, jaké jsou názvy sloupců vašeho cizího klíče. Group se automaticky přeloží na group_id sloupec. Pokud máte existující sloupec s názvem group , pak byste to měli ve svém vztahu výslovně uvést:

public function group () 
{
    return $this->belongsTo('Group', 'group');
}

Pokud se pro vlastnost group zobrazí chyba „Pokouším se získat vlastnost non-object“ , pak váš vztah nevrací žádné výsledky ($user->group bude NULL ). V tomto okamžiku byste se měli ujistit, že váš vztah je správně nastaven (např. pomocí správného náleží, hasOne, hasMany atd.), a ujistěte se, že ve své databázi skutečně máte související záznam.




  1. Zabránit automatickému přírůstku na duplicitním vložení MySQL

  2. SQL spojit data z více tabulek s MYSQL

  3. Jak získat poslední záznam v každé skupině v MySQL

  4. Výjimka zaraženého SQL pro JDBC