当我有不同的外键时如何从数据库中查询?

How to query from database when I have different foreign keys?

我正在尝试从我的数据库中查询数据并将结果传递给一个名为 events 的视图,我遇到的问题是我的一个查询总是 return 相同的结果,因为在where 条件 $events_id 始终相同。有没有更好的方法来进行查询?更好的逻辑?

此代码来自我的名为 EventController 的控制器:

public function index()
{
    $firm_id = DB::table('firms')->where('user_id', auth()->id())->value('id');
    $events_id = DB::table('events')->where('firm_id', $firm_id)->value('id');
    $events = DB::table('events')->where('firm_id', $firm_id)->get()->toArray();
    $actual_events = DB::table('actual_events')->where('event_id', $events_id)->get()->toArray();
    return view('events',['events' => $events,'actual_events' => $actual_events]);
}

由于 $events_id 每次都相同,因此 $actual_events 将只包含第一个结果。

我上传的图片显示了问题,我的 table 的前三列没问题。从第四个开始,它们包含重复值:

你刚才说你们的table有关系。 在这种情况下,最好使用 eloquent, 首先你应该在模型中输入每个 table 的关系,如下所示:

class User extends Authenticatable{
    public function cities()
    {
        return $this->hasmany('App\City'); //you should type your relation
    }
}

对于关系,您可以使用此 link:laravel relationships

之后,当您将 $user 变量压缩到您的视图时,您可以使用此语法获取与该用户的城市值关系:$user->cities;.

我猜你需要这样的东西:

$event_ids = DB::table('events')->where('firm_id', $firm_id)->pluck('id');

$actual_events = DB::table('actual_events')->whereIn('event_id', $event_ids)->get()->toArray();

或者详细写下你的问题,我会尽力帮助你。