我正在努力过滤一些结果。.我有一个名为“ Process”的表,另一个名为“ Actors”的表。过程中有许多演员。这是模型:
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Process extends Model
{
public function actors()
{
return $this->hasMany(Actor::class)->orderBy('actor');
}
}
因此,我有一个视图可以显示所有过程及其参与者。问题是,我想选择一个过滤器,以检查 Auth :: user()->用户名是否与Actor-> actor相同。
我尝试了以下方法:
public function index()
{
$processes = Process::all();
$processes ->actors()->where('actor', 'Test')->get();
return view('process.process', compact('processes '));
}
(在出于测试目的与Test进行比较的地方,如果我确实可以正常工作,则将其更改为 Auth :: user()-> username )
这将显示以下错误:
BadMethodCallException方法 Illuminate \ Database \ Eloquent \ Collection :: actors不存在。
我尝试了一些变体(例如,在控制器中运行foreach,但是我做错了,或者那不是做到这一点的方法...),但是没有任何效果。任何帮助都非常感谢!
答案 0 :(得分:1)
如果是的话,我假设您想获取当前经过身份验证的用户的所有进程。
public function index()
{
$processes = Process::whereHas('actors',function($query){
$query->where('id',Auth::user()->id);
});
return view('process.process', compact('processes '));
}