首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Laravel 5-雄辩的模型-3表串联

Laravel 5-雄辩的模型-3表串联
EN

Stack Overflow用户
提问于 2016-02-12 11:57:01
回答 2查看 1.1K关注 0票数 1

场景-我有3个表>国家、州、城市。城市有州栏,国家有乡土栏,国家没有参考。

城市模型方法

代码语言:javascript
复制
public function state(){ 
    return $this->belongsTo('App\State', 'stateid');
}

状态模型方法

代码语言:javascript
复制
public function country(){
    return $this->belongsTo('App\Country', 'countryid');
}
public function cities(){
    return $this->hasMany('App\City', 'stateid');
}

国别模型方法

代码语言:javascript
复制
public function states()
{
    return $this->hasMany('App\State', 'countryid');
}

Problem --我想得到一个国家的城市名单。我怎样才能在乡村模型中创建这样的方法?

代码语言:javascript
复制
public function cities(){
    return $this->states()->cities(); //Calling hasMany on builder is not possible.
}

类似地,一种从城市模型到国名的方法。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-09-06 13:52:24

若要检索一个国家所有城市的集合,请使用hasManyThrough方法:

代码语言:javascript
复制
<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class Country extends Model
{
    public $timestamps = false;

    public function states()
    {
        return $this->hasMany(State::class);
    }

    public function cities()
    {
        return $this->hasManyThrough(City::class, State::class);
    }
}
票数 0
EN

Stack Overflow用户

发布于 2016-12-15 09:07:56

国家模式:

代码语言:javascript
复制
<?php

    namespace App;
    use Illuminate\Database\Eloquent\Model;

    class Country_master extends Model
    {    

        public function city_state_data()
        {
            return $this->belongsToMany('App\State_master','city_masters');
        }  
    }

呼叫模式:

代码语言:javascript
复制
<?php
    $data=Country_master::find(1)->city_state_data()->select('city_name','state_name')->get();
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35362049

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档