2017-04-22 107 views
0

我很困惑這種關係,我試過視頻教程,但無法得到如何解決這種關係。在此先感謝如果有人能解釋我。如何解決laravel關係

我試過在mysql中工作正常,但我正在學習laravel並希望這樣做。

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

Product 
------- 
id 
internal_name 
display_name 

Licence 
------ 
id 
product_id 
key 

Linked_licence 
-------- 
licence_id 
user_id 

用戶具有

我使用這樣的,但得到的錯誤通過linked_licence多牌:

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

用戶通過許可證有很多產品

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

產品屬於許可

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

這是錯誤:

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) 

但問題是我不知道laravel關係如何創建這些類型的查詢。

更新時間:

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 

上面的查詢工作,但如何與laravel使用?

+1

1.你有一個錯字在你最後的代碼列,2。你得到什麼錯誤? –

+0

已更新任何帖子 – Earon

+0

嘗試將licences.id更改爲僅限ID。 –

回答

0

您的問題似乎與這行代碼

Licences::class, 'licences.id', 'user_id', 'licence_id'); 
看來該列沒有在表中從看你的錯誤存在

做。

仔細檢查你的拼寫,它看起來像它看起來的表中調用licences_user名爲lincences.id