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获取关系,然后过滤它。
另一答案
这看起来很奇怪,看起来好像你正在定义一个关系并运行定义关系的查询。您应该首先在project_item模型中定义关系
public function getVisibleTasks()
{
return $this->hasMany('AppTask', 'project_id');
}
还要定义该关系的反转。
然后通过控制器从控制器中调用它
$project_item ->getVisibleTasks()->orderBy('order', 'asc');
这将自动调用与您的模型相关的数据。
以上是关于Laravel 5使用刀片模板在视图中调用函数时如何使用参数的主要内容,如果未能解决你的问题,请参考以下文章
是否可以在 Laravel (4) 刀片模板中获取视图/布局名称
Laravel 刀片模板不起作用 - 调用未定义的函数 Illuminate\View\Compilers\token_get_all()