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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Laravel 5使用刀片模板在视图中调用函数时如何使用参数相关的知识,希望对你有一定的参考价值。

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

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

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

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

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

我怎样才能做到这一点?

问候,

迪伦

答案

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

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

public function getVisibleTasks($tasklist_id){
    return AppTask::where('id',$this->project_id)->where('tasklist_id',$tasklist_id)->orderBy('order', 'asc')->get();
}
另一答案

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

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

然后你的功能将是这样的

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

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

See this post

另一答案

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

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

还要定义该关系的反转。

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

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

以上是关于Laravel 5使用刀片模板在视图中调用函数时如何使用参数的主要内容,如果未能解决你的问题,请参考以下文章

Laravel:在刀片模板中调用静态函数

在 Laravel 刀片模板中调用 ReactJS 组件

Laravel 刀片模板不使用 slug 渲染

是否可以在 Laravel (4) 刀片模板中获取视图/布局名称

Laravel 刀片模板不起作用 - 调用未定义的函数 Illuminate\View\Compilers\token_get_all()

在 laravel 刀片视图中显示 vue js 模板