我正在努力筛选一些结果。。我有一个叫做“过程”的表,还有一个叫做“演员”。过程有许多参与者。模型如下:

<?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 '));

    }

(在我比较测试的地方,如果我让它工作了,我会将它改为Auth::user()->username)
这将显示以下错误:
BadMethodCallException方法
Delase\Dabase\EooQue\Cube::演员不存在。
我尝试了一些变化(例如,在控制器中运行foreach,但要么我做错了,要么这不是方法……),但没有效果。任何帮助都是非常感谢的!

最佳答案

我假设您想要获取当前已验证用户的所有进程(如果是),这是您所需要的。

public function index()
{
    $processes = Process::whereHas('actors',function($query){
                     $query->where('id',Auth::user()->id);
                  });

    return view('process.process', compact('processes '));

}

关于php - 筛选结果有很多关系,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/55065046/

10-14 18:35