Laravel 5使用刀片模板在视图中调用函数时如何使用参数

问题描述 投票:0回答:3

我在视图中有一个显示任务的foreach。

 @foreach($project_item->getVisibleTasks($tasklist->id) as $task)

在我的模型中,我有以下功能:

  public function getVisibleTasks($tasklist_id)
  {
    return $this->hasMany('App\Task', 'project_id')->where('tasklist_id', $tasklist_id)->orderBy('order', 'asc');
  }

删除参数时,该功能可以正常工作。 (但显示所有结果。因为删除了where子句)。当我在视图中传递静态数字(例如1)时,它仍然无效。

我怎样才能做到这一点?

问候,

迪伦

php laravel variables foreach parameters
3个回答
0
投票

我不确定你在设置雄辩的关系时可以使用where子句。 Laravel Eloquent Relationship doc page并不认为这是可能的。

如果可能,请使用下面的代码,您可以使用eloquent查询构建器;

public function getVisibleTasks($tasklist_id){
    return App\Task::where('id',$this->project_id)->where('tasklist_id',$tasklist_id)->orderBy('order', 'asc')->get();
}

0
投票

它可能无法正常工作,因为在关系中调用了关系查询,例如,您可以创建关系函数和查询函数

public functon tasks() {
    return $this->hasMany('App\Task', 'project_id');
}

然后你的功能将是这样的

public function getVisibleTasks($tasklist_id)
  {
    return $this->tasks()->where('tasklist_id', $tasklist_id)->orderBy('order', 'asc');
  }

那样laravel获取关系,然后过滤它。

See this post


0
投票

这看起来很奇怪,看起来好像你正在定义一个关系并运行定义关系的查询。您应该首先在project_item模型中定义关系

 public function getVisibleTasks()
      {
        return $this->hasMany('App\Task', 'project_id');
      }

还要定义该关系的反转。

然后通过控制器从控制器中调用它

$project_item ->getVisibleTasks()->orderBy('order', 'asc');这将自动调用与您的模型相关的数据。

© www.soinside.com 2019 - 2024. All rights reserved.