【发布时间】:2014-08-29 00:03:02
【问题描述】:
我有两张桌子。这个叫做teams:
+------------+--------------+------+----------------------+----------+
| Column | Type | Null | Default | Comments |
+------------+--------------+------+----------------------+----------+
| id | int(10) | No | | |
| apikey | varchar(255) | Yes | NULL | |
| name | varchar(255) | Yes | NULL | |
| logo | varchar(255) | Yes | NULL | |
| url | varchar(255) | Yes | NULL | |
| hashtag | varchar(255) | Yes | NULL | |
| created_at | timestamp | No | 0000-00-00 00:00:00 | |
| updated_at | timestamp | No | 0000-00-00 00:00:00 | |
+------------+--------------+------+----------------------+----------+
另一个叫做streamers:
+--------------+--------------+------+----------------------+----------+
| Column | Type | Null | Default | Comments |
+--------------+--------------+------+----------------------+----------+
| id | int(10) | No | | |
| apikey | varchar(255) | Yes | NULL | |
| name | varchar(255) | Yes | NULL | |
| team | int(11) | Yes | NULL | |
| type | varchar(255) | Yes | NULL | |
| twitch | varchar(255) | Yes | NULL | |
| mlg | int(11) | Yes | NULL | |
| url | varchar(255) | Yes | NULL | |
| twitter | varchar(255) | Yes | NULL | |
| status | int(11) | Yes | NULL | |
| viewers | int(11) | Yes | NULL | |
| created_at | timestamp | No | 0000-00-00 00:00:00 | |
| updated_at | timestamp | No | 0000-00-00 00:00:00 | |
| last_live | timestamp | No | 0000-00-00 00:00:00 | |
| last_edit_by | int(11) | Yes | NULL | |
+--------------+--------------+------+----------------------+----------+
如您所见,streamers 表有一个 team 字段,该字段仅是 team ID。
我的 Team.php 模型已经有了这个:
public function streamers()
{
return $this->hasMany('Streamer', 'team');
}
这就是我想做的事情
我想搜索 team 的 streamers,但是最终用户只需要使用名称而不是 ID。如何建立表关系,以便在 streamers 表中查询 team 名称而不是 ID?这可能吗?
我会认为这正是 hasOne 的关系,但显然我错了。因为我显然在 team 表中没有 streamer ID,因为 team 上的每个 streamer ID 都会可怕。 Laravel 的关系在这里似乎有点不对...因为 hasOne 适合 streamers 但它只适用于 teams,但本质上 streamers 有 streamers strong>team 和 team 属于许多 streamers,这意味着 belongsToMany 是有意义的。
谢谢
【问题讨论】:
标签: php mysql laravel eloquent relationship