Laravel在相关模型上获取模型的方法

时间:2017-03-15 21:05:43

标签: php laravel eloquent

我以这种方式设置了Mall和City模型的关系:

商城模特:

public function city() {
    return $this->belongsTo('App\City');
}

城市模特:

public function malls() {
    return $this->hasMany( 'App\Mall' );
}

我在City类中有一个方法,返回半径附近的所有城市:

public function getNearby($lat, $long, $r) {
   // return array of id of cities in $r radius
}

当我想要到附近城市的所有购物中心时,我会这样做:

function getMallsInNearby() {
    $city_ids = City::getNearby($lat, $long, $r');
    $all_malls = Mall::all();
    foreach ( $all_malls as $mall ) {
        $malls[] = (in_array($mall->city->id , $city_ids) ? $mall : null);
    }
    return array_filter($malls);
}

我尝试在商场和城市使用whereHas()方法,但没有任何成功。 在Laravel中以雄辩的关系实现这一目标的最佳途径是什么?

1 个答案:

答案 0 :(得分:2)

使用whereIn()...

$city_ids = City::getNearby($lat, $long, $r');
$malls = Mall::whereIn('city_id', $city_ids);

查看文档......你几乎可以做任何事...... https://laravel.com/docs/5.4/queries

希望这有帮助