【问题标题】:How use filter eloquent?如何使用过滤器 eloquent?
【发布时间】:2016-02-29 22:45:17
【问题描述】:

我有三张桌子

  • 调用:id、title、place_id...
  • 地点:id、name、departament_id...
  • 部门:id、姓名...

在模型中

class Call extends Model
{
    public function place(){
        return belongsTo('App\Place');
    }
}

class Place extends Model
{
    public function departament(){
        return belongsTo('App\Departament');
    }
}

在控制器上

$calls = new \App\Call;

if($status != ''){
    $calls = $calls::with(['places'=>function($q) use ($departament){
        $q->where('places.departament_id','=',$departament);
    }]);
}

我想过滤来自某个部门的电话,但它不起作用。

【问题讨论】:

  • 请解释它是如何不起作用的。提供当前结果和预期结果的示例。
  • 不应该是地点而不是地点吗?此外,部门拼写错误。
  • 文字略有改进。
  • @CindyMeister,请查看我的代码:pastebin.com/w5vYZ8Rb

标签: laravel eloquent


【解决方案1】:

您的代码存在很多问题。 我会给你正确的解决方案,希望你能通读更改的内容,看看你哪里出错了,因为老实说,解释所有错误都太过分了:P

class Call extends Model
{
    public function place(){
        return $this->belongsTo(Place::class);
    }
}

class Place extends Model
{
    public function departament(){
        return $this->belongsTo(Departament::class);
    }
}

和控制器:

if($status != ''){
    $calls = Call::with('place')->where('departament_id', $departament)->get();
}

注意:部门拼写错误

【讨论】:

  • 对不起Pistachio,我当时描述的错误是错误的,在论坛这里签了几个错误的代码,但是即使使用你的提示也没有用。
  • 我试过了:$calls = \App\Call::with('place')->where('departament_id',$departament)->paginate(10);
  • 请记住,您的calls 表上需要place_idplaces 表上需要department_id
  • 您需要使用get() 方法来实际获取结果。 with('place')->where('departament_id',$departament)->get();。抱歉,但你应该去 codereview 甚至更好 - 去看看 laravel basics@laracasts (laracasts.com/series/laravel-5-fundamentals)
猜你喜欢
  • 2022-07-11
  • 2020-06-24
  • 1970-01-01
  • 2021-05-12
  • 2013-09-03
  • 2020-04-22
  • 2019-08-31
  • 1970-01-01
  • 2021-08-14
相关资源
最近更新 更多