gpt4 book ai didi

php - Laravel Controller 中的嵌套 SQL 查询

转载 作者:行者123 更新时间:2023-11-28 23:38:39 24 4
gpt4 key购买 nike

我的 Controller 中运行了两个查询。我需要将第一个查询的值传递给第二个查询。我希望将这两个查询的结果发送到我的 View 。

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”),我的查询有效并且 View 以正确的方式建立。我的问题是,在这个函数中,如何将 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() 方法),您有两种方法:循环 Collection 并在每次迭代时进行查询(不好),或者创建一个id 数组并在第二个查询中使用 whereIn(更好):

$passinvaluehere = $query->lists('act_id');
// https://laravel.com/docs/5.2/queries#retrieving-results
// this creates and array of `act_id` s

$bids = DB::table("dbBids")
->whereIn("quote_id", $passinvaluehere)
->get();
// you now have a Collection of multiple $bids

如果您只希望从您的第一个查询中获得一条记录,则需要更改获取方法,改用 first(),或者只获取实际集合的第一个元素,例如first($query)$query[0]

$query = DB::table("dbQuotes")
....
->first();
$passedvaluehere = $query->act_id;

关于php - Laravel Controller 中的嵌套 SQL 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35012996/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com