【发布时间】:2017-07-09 08:38:49
【问题描述】:
我有三个这样的表:
// users
+----+-----------+
| id | user_name |
+----+-----------+
| 1 | Jack |
| 2 | Peter |
| 3 | John |
+----+-----------+
// skills
+----+------------+
| id | skill_name |
+----+------------+
| 1 | PHP |
| 2 | HTML |
| 3 | Laravel |
| 4 | MySQL |
| 5 | jQuery |
+----+------------+
// skill_user
+----------+---------+
| skill_id | user_id |
+----------+---------+
| 2 | 1 |
| 5 | 1 |
| 1 | 2 |
| 2 | 2 |
| 4 | 2 |
+----------+---------+
现在我想获得一个特定用户的所有技能。我可以通过在原始 sql 查询中使用 join 子句来做到这一点:
SELECT s.skill_name
FROM skills s
JOIN skill_user su ON s.id = su.skill_id
WHERE su.user_id = :user_id
/* output (assuming :user_id is 1)
+------------+
| HTML |
| jQuery |
+------------+
好的,一切都好。现在我想知道,如何通过在 Laravel 框架的模型中添加方法来做到这一点?我要做的就是使用belongsTo()、hasOne()、hasMany() 等..
【问题讨论】: