Php Laravel控制器中的嵌套SQL查询
我的控制器中运行了两个查询。我需要将第一个查询中的值传递到第二个查询中。我希望将这两个查询的结果发送到我的视图Php Laravel控制器中的嵌套SQL查询,php,mysql,laravel,laravel-5,Php,Mysql,Laravel,Laravel 5,我的控制器中运行了两个查询。我需要将第一个查询中的值传递到第二个查询中。我希望将这两个查询的结果发送到我的视图 public function jobs() { $query = DB::table("dbQuotes") ->leftJoin("dbACT", "dbQuotes.act_id", "=", "dbACT.ID") ->leftJoin("dbOpps", "dbQuotes.act_id", "=", "dbOpps.c
public function jobs()
{
$query = DB::table("dbQuotes")
->leftJoin("dbACT", "dbQuotes.act_id", "=", "dbACT.ID")
->leftJoin("dbOpps", "dbQuotes.act_id", "=", "dbOpps.contactID")
->leftjoin('dbBids', 'dbQuotes.act_id','=',
DB::raw('dbBids.quote_id AND dbBids.user_id = '. Auth::user()->id))
->where("dbQuotes.active", "=", "1")
->select("dbQuotes.*", "dbACT.*", "dbBids.*",
(DB::raw('date_format(dbQuotes.posted_date, "%d/%m/%Y %H:%i") as posted_date')),
(DB::raw('date_format(dbOpps.expected_date, "%d/%m/%Y") as expected_date')))
->groupBy("dbQuotes.id")
->orderBy("posted_date", "desc")
->get();
$passinvaluehere = $query->dbQuotes.act_id
$bids = DB::table("dbBids")
->where("quote_id", "=", $passinvaluehere)
->get();
return view('jobs', ['query' => $query,'bids' => $bids]);
}
如果我用一个数字(即“8763”)替换传递的值,则我的查询工作正常,并且以正确的方式建立视图。我的问题是,在这个函数中,如何将dbQuotes.act_id的值传递到第二个查询中
***更新了应答中的代码:[对非对象上的成员函数lists()的错误调用]
public function jobs()
{
$query = DB::table("dbQuotes")
->leftJoin("dbACT", "dbQuotes.act_id", "=", "dbACT.ID")
->leftJoin("dbOpps", "dbQuotes.act_id", "=", "dbOpps.contactID")
->leftJoin('dbBids', 'dbQuotes.act_id','=',
DB::raw('dbBids.quote_id AND dbBids.user_id = '. Auth::user()->id))
->where("dbQuotes.active", "=", "1")
->select("dbQuotes.*", "dbACT.*", "dbBids.*",
(DB::raw('date_format(dbQuotes.posted_date, "%d/%m/%Y %H:%i") as posted_date')),
(DB::raw('date_format(dbOpps.expected_date, "%d/%m/%Y") as expected_date')))
->groupBy("dbQuotes.id")
->orderBy("posted_date", "desc")
->get();
$act_id = $query->lists('act_id');
$bids = DB::table("dbBids")
->whereIn("quote_id", $act_id)
->get();
return view('jobs', ['query' => $query,'bids' => $bids]);
}
如果您有多条记录(按照
->get()
方法),您有两种方法:循环收集并在每次迭代中进行查询(错误),或者创建一个ID数组并在第二次查询中使用,其中(更好):
如果第一次查询只需要一条记录,则需要使用first()
来更改fetcher方法,或者只获取实际集合的第一个元素,例如first($query)
或$query[0]
$query = DB::table("dbQuotes")
....
->first();
$passedvaluehere = $query->act_id;
我曾考虑使用联接,但dbBids表中有多个值。$query->pull('act_id');正在给出错误[非对象]。我希望dbQuotes有多条记录,因此需要使用->get(),它是:->get()$act_id=$query->pull('act_id');很抱歉,对于查询生成器,这是lists()
,我的错误是:更新的应答仍然在非对象上调用成员函数lists()。是的,我也尝试用列表替换get,但仍然得到非对象错误。有趣的是,在phpStorm中,分析说lists()被折旧了,这很奇怪。
$query = DB::table("dbQuotes")
....
->first();
$passedvaluehere = $query->act_id;