代码之家  ›  专栏  ›  技术社区  ›  barfurth

理解Laravel的创造-它们没有意义。。。?

  •  0
  • barfurth  · 技术社区  · 10 年前

    我有两张桌子。这个叫做 团队 :

    +------------+--------------+------+----------------------+----------+
    |   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                 |          |
    +--------------+--------------+------+----------------------+----------+
    

    如您所见 拖缆 表中有一个团队字段 团队 身份证件

    我的 团队.php 模型已具有此功能:

    public function streamers()
        {
            return $this->hasMany('Streamer', 'team');
        }
    

    这是我想做的

    我想搜索 拖缆 通过 团队 ,但最终用户只需使用名称而不是ID。如何建立表关系,以便查询 拖缆 团队 名称而不是ID?这是可能的吗?

    我本以为这正是hasOne的目的,但显然我错了。因为我显然没有 彩色纸带 ID在 团队 因为每个 彩色纸带 上的ID 团队 会很糟糕。Laravel的关系似乎有点不对。。。因为hasOne适合 拖缆 但它只适用于 团队 ,但本质上 拖缆 有一个 团队 以及 团队 属于许多人 拖缆 这意味着归属于许多人会有意义。

    谢谢

    1 回复  |  直到 10 年前
        1
  •  1
  •   mandersen    10 年前

    你要找的是 属于 关系

    在里面 拖缆 包括:

    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