【问题标题】:Laravel eloquent relationships 3rd levelLaravel 雄辩的关系 3 级
【发布时间】:2017-03-22 05:25:58
【问题描述】:

表格:

divisions
    id      name

districts
    id      division_id         name

subdistricts
    id      district_id         name


class Division extends Model
{
    //
    public function districts()
    {
        return $this->hasMany('App\District', 'division_id');
    }

    public function subdistricts()
    {
        // what will be here
    }

}

是否可以在不使用分区表的分区 ID 的情况下通过分区 ID 获取分区

【问题讨论】:

    标签: laravel model eloquent


    【解决方案1】:

    了解hasManyThrough() 关系。因此,subdisctricts() 将如下所示:

    public function subdisctricts()
    {
        return $this->hasManyThrough('App\SubDistrict', 'App\District');
    }
    

    【讨论】:

      【解决方案2】:

      你可以试试hasManyThrough()

      public function subdistricts()
      {
          return $this->hasManyThrough('App\Subdistrict', 'App\District');
      }
      

      has-many-through 关系为通过中间关系访问远距离关系提供了便捷的捷径。

      【讨论】:

        【解决方案3】:

        您可以按照推荐使用hasManyThrough(),hasManyThrough 的语法是:

        class Division extends Model
        {
            public function posts()
            {
                return $this->hasManyThrough(
                    'App\Subdistrict', 'App\District',
                    'country_id', 'user_id', 'id'
                );
            }
        }
        

        第三个参数是foreign key on the intermediate model的名字,第四个参数是foreign key on the final model的名字,第五个参数是local key——See Docs

        【讨论】:

          【解决方案4】:

          此关系需要使用hasManyThrough

          public function subdisctricts()
          {
              return $this->hasManyThrough('App\Subdistrict', 'App\District');
          }
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2018-02-19
            • 2017-04-14
            • 2018-06-02
            • 2013-01-22
            • 2015-03-14
            • 2018-11-28
            • 2015-01-11
            相关资源
            最近更新 更多