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

时间:2018-03-28 14:15:14

标签: twitter-bootstrap laravel models controllers

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

  • 请注意,我不是在使用模特。
  • 每个帐户都可以进行多次互动

的AccountController

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

}

1 个答案:

答案 0 :(得分:1)

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

$account = Account::with('interactions', 'checklist')->find($id);
return view('account_view', compact("account"));

在您的刀片文件中:

$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);
}