我有一个应用程序,我在一个名为“games”的表中有一些数据,看起来像这样:
# games
+----+---------+--------+--------+
| id | name | dataId | parent |
+----+---------+--------+--------+
| 1 | Team1 | 444 | null |
+----+---------+--------+--------+
| 2 | Team2 | 445 | null |
+----+---------+--------+--------+
| 3 | Team1.1 | 445 | 1 |
+----+---------+--------+--------+
| 4 | Team2.1 | 445 | 2 |
+----+---------+--------+--------+
| 5 | Team2.2 | 445 | 2 |
+----+---------+--------+--------+
| 6 | Team3 | 446 | null |
+----+---------+--------+--------+
| 7 | Team4 | 447 | null |
+----+---------+--------+--------+
正如您所看到的,记录可以有一个指向表中主记录的父记录。
我还有一个名为“fixtures”的表,这个表如下所示:
# fixtures
+----+--------+--------+-------+
| id | homeId | awayId | score |
+----+--------+--------+-------+
| 1 | 444 | 445 | 0 |
+----+--------+--------+-------+
| 2 | 445 | 446 | 0 |
+----+--------+--------+-------+
| 3 | 446 | 447 | 0 |
+----+--------+--------+-------+
所以我想做的是使用Eloquent加入两个表,如下所示:
// For Home:
WHERE fixtures.homeId = games.dataId AND games.parent = null
// And another for Away:
WHERE fixtures.awayId = games.dataId AND games.parent = null
我以为我可以使用OneToMany,但我只能指定一个外键。
Laravel有可能吗?如果是这样的话?
答案 0 :(得分:1)
将此查询用于第一个查询并更改第二个查询的字段名称
class RatingForm(forms.Form):
rate = forms.IntegerField(label='Noter', validators=[MaxValueValidator(5), MinValueValidator(0)])
答案 1 :(得分:0)
您可以尝试返回具有正确属性集的BelongsToMany实例。由于原始函数belongsToMany函数也返回此类的对象。
编辑:一些谷歌搜索给了我这个答案(How I can put composite keys in models in Laravel 5?),它有一个使用特征的答案。代码可以在github找到。