使用控制器从多个表中检索数据

Using controllers to retrieve data from multiple tables

目前我有一个带有 3 tables 的 SQLite 数据库;账户、互动和清单。在帐户控制器中,我让它从所有三个 table 中提取数据以显示内容。
帐户 table 中存储了多个帐户,交互 table 通过外键 (account_id) 链接。
在帐户页面上,我只想在相应帐户上列出具有相同帐户 ID 的交互。 目前我让它们出现在视图中,但视图当前列出了 table 中的每个交互,我知道这是因为我正在使用 Interaction::all() 但我一直无法弄清楚如何正是要做到这一点,任何帮助将不胜感激。

账户控制器

    public function show($id)
{
    $account = Account::find($id);

    $checklists = Checklist::where('account_id', $id)->first();
    //$interactions = Interaction::get();
    $interactions = Interaction::all();
    //dd($interactions);


    return view('account_view')->with('account', $account)->with('checklists', $checklists)->with('interactions', $interactions);

}

您的模型中是否设置了模型关系?如果是这样,您可以使用 with:

加载相关的 objects
$account = Account::with('interactions', 'checklist')->find($id);
return view('account_view', compact("account"));

在您的 blade 文件中:

$account;
$account->checklist; //your checklist with account_id of $account->id
$account->interactions; //your interactions with account_id of $account->id

要在您的帐户模型中设置关系:

public function checklist(){
  return $this->hasOne(Checklist::class);
}
public function interactions(){
  return $this->hasMany(Interaction::class);
}