Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Laravel należy do rzucania niezdefiniowanych błędów

Po pomocy przez czat problem polegał na tym, że istniała kolumna o nazwie group , a metoda relacji była również nazywana group , więc wartość kolumny tabeli miała pierwszeństwo przed metodą relacji.

Zmiana nazwy metody relacji lub group kolumna do czegoś takiego jak group_id oba są odpowiednimi rozwiązaniami (proponuję group_id trasa).

Oryginalna odpowiedź:

Grupę pobierasz za pomocą magicznej właściwości, a nie bezpośrednio z metody.

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

Jeśli pobierzesz group() metoda, zwróci obiekt relacji, nie wykona żadnych zapytań i pobierze powiązany obiekt.

Ponadto Eloquent dokona założeń dotyczących nazw kolumn kluczy obcych. Group automatycznie przetłumaczy na group_id kolumna. Jeśli masz istniejącą kolumnę o nazwie group , należy to wyraźnie określić w relacji:

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

Jeśli pojawi się błąd „Próbuję uzyskać właściwość nieobiektową” dla właściwości group , Twoja relacja nie zwraca żadnych wyników ($user->group będzie NULL ). W tym momencie powinieneś upewnić się, że twoja relacja jest prawidłowo skonfigurowana (np. używając poprawnej „należyTo”, „hasJeden”, „hasWiele” itp.) i upewnić się, że faktycznie masz powiązany wpis w swojej bazie danych.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Która wersja to mój serwer MySQL?

  2. Dołącz do nas w Amsterdamie na spotkanie z OptimaData i vidaXL

  3. obliczanie i pokazywanie daty jako „sek temu”, „minuty temu”, „godziny temu” itp

  4. Jak załadować dane do pola tekstowego z tabeli bazy danych sql?

  5. jak mogę uzyskać całkowitą liczbę tej samej nazwy różnych kolumn w jednej tabeli w MySQL?