如何解决laravel关系

时间:2017-04-22 13:44:57

标签: 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 个答案:

答案 0 :(得分:0)

你的问题似乎与这行代码有关

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

看起来表中的列不存在查看错误。

仔细检查你的拼写,看起来它正在查看名为licences_user

列的名为lincences.id的表格内