2017-04-22 6 views
0

Ich bin sehr verwirrt mit dieser Beziehung, ich versuchte Video-Tutorial, aber konnte nicht, wie diese Beziehung zu lösen. Danke im Voraus, wenn mir jemand erklären kann.Wie laravel zu lösen Beziehung

Ich versuchte in MySQL, das funktioniert gut, aber ich lerne Laravel und möchte so tun.

User 
--------- 
id 
email 
name 
address1 
address2 
country 

Product 
------- 
id 
internal_name 
display_name 

Licence 
------ 
id 
product_id 
key 

Linked_licence 
-------- 
licence_id 
user_id 

Benutzer hat viele Lizenzen durch linked_licence

ich so bin mit aber immer Fehler:

public function licences() 
    { 
     return $this->hasManyThrough(Licence::class, UserLicence::class, 'licences.id', 'user_id', 'licence_id'); 
    } 

Benutzer hat viele Produkte durch Lizenz

public function licences() 
     { 
      return $this->hasManyThrough(Product::class, Licences::class, 'licences.id', 'user_id', 'licence_id'); 
     } 

Produkt zu lizenzieren gehört

public function licences() 
     { 
      return $this->belogsTo(Product::class); 
     } 

Dies ist Fehler:

SQLSTATE[42S22]: Column not found: 1054 Unknown column 'licences_user.licences.id' in 'field list' (SQL: select `licences`.*, `licences_user`.`licences`.`id` from `licences` inner join `licences_user` on `licenscs_user`.`id` = `licences`.`user_id` where `licences_user`.`licences`.`id` is null) 

Aber Problem ist, ich weiß nicht, über Laravel Beziehung, wie diese Art von Abfragen zu erstellen.

Aktualisiert:

SELECT 
    `users`.*, 
    `licences`.*, 
    `licenses_user`.`license_id` 
FROM `licences` 
    INNER JOIN `licenses_user` ON `licenses_user`.`license_id` = `licences`.`id` 
    INNER JOIN users ON licenses_user.user_id = users.id 
WHERE `licenses_user`.`license_id` = 1 

Above Abfrage funktioniert, aber wie mit Laravel zu bedienen?

+1

1. Sie haben einen Tippfehler in Ihrem letzten Code, 2. welche Fehler erhalten Sie? –

+0

Jeder Beitrag aktualisiert – Earon

+0

versuchen, licences.id nur ID zu ändern. –

Antwort

0

Ihr Problem scheint mit dieser Codezeile

Licences::class, 'licences.id', 'user_id', 'licence_id'); 

es scheint, dass die Spalte nicht existiert von Blick auf Ihren Fehlern in der Tabelle zu tun.

Doppel Sie die Rechtschreibung überprüfen, sieht es aus wie es in der Tabelle licences_user für eine Spalte namens suchen ist lincences.id namens