【问题标题】:Laravel way to get model using method on related modelLaravel 使用相关模型上的方法获取模型的方法
【发布时间】:2017-08-06 20:02:39
【问题描述】:

我以这种方式为 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 中使用 Eloquent 关系实现这一目标的最佳方法是什么?

【问题讨论】:

  • 你在这里打错了getNearby($lat, $long, $r');你有多余的单引号。

标签: php laravel eloquent


【解决方案1】:

使用 whereIn()...

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

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

希望对你有帮助

【讨论】:

  • 这几乎就是您所需要的。在我的答案中删除我试图做的任何事情。
猜你喜欢
  • 2021-11-21
  • 1970-01-01
  • 1970-01-01
  • 2020-12-23
  • 2018-10-12
  • 2014-07-31
  • 1970-01-01
  • 2020-09-11
  • 1970-01-01
相关资源
最近更新 更多