我有两张桌子。这个叫做团队:
+------------+--------------+------+----------------------+----------+
| 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 | |
+------------+--------------+------+----------------------+----------+
另一个名为飘带:
+--------------+--------------+------+----------------------+----------+
| 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 | |
+--------------+--------------+------+----------------------+----------+
如您所见,流媒体表格中有一个团队字段,该字段只是团队 ID。
我的 Team.php 模型已经有了这个:
public function streamers()
{
return $this->hasMany('Streamer', 'team');
}
我想通过团队搜索流媒体,但最终用户只需要使用名称而不是ID。如何建立表格关系,以便我可以在流媒体表格中查询团队名称而不是ID?这有可能吗?
我会认为这正是一个人的关系,但显然我错了。由于我显然没有团队表中的流媒体 ID,因为上的每个流媒体 ID团队会很糟糕。 Laravel的关系在这里似乎有点不对...因为hasOne适合飘带但它只适用于团队,但基本上飘带有一个< strong>团队和团队属于许多流媒体,这意味着belongsToMany会有意义。
答案 0 :(得分:1)
您正在寻找的是 belongsTo 关系。
在飘带中包含:
public function team()
{
$this->belongsTo('Team','team');
}
然后您可以按团队查询流媒体:
$streamer = Streamer::whereHas('team', function($q)
{
$q->where('name', 'like', $teamName);
})->get();
可以在文档中找到更多详细信息:http://laravel.com/docs/eloquent#querying-relations