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;