很抱歉,如果我的标题令人困惑,不知道如何在一行内解释。让我们说我有一个包含一些列的表格,我有这个
$model = Document::where('systemName', '=', $systemName)->where('ticketNumber', '=', ($nextTicketNumber))->get(); ticketNumber is unique where as there are quite a few systemNames
以上内容将完全符合我的要求,但我想要的更多。我想要一个另一个数组,它将所有行存储在同一个systemName下。我知道我可以通过
来做到这一点$allSystemNameModel = Document::where('systemName', '=', $systemName)
但是有没有办法让两个变量变得更容易?
答案 0 :(得分:2)
不,你不能用一个语句将两个集合都放到一个变量中,但是,你可以创建一个数组并将结果存储在那里:
$both = [];
$both['model'] = ...
$both['all'] = ...
更新:
为避免两次查询数据库,您可以使用laravel为我们提供的first
方法。
$allSystemNameModel = Document::where('systemName', '=', $systemName);
$model = $allSystemNameModel->first(function ($doc) use ($nextTicketNumber) {
return $doc->ticketNumber == $nextTicketNumber;
});
$both['model'] = $model;
$both['all'] = $allSystemNameModel->all();
注意:使用php闭包时一定要使用use
,否则$nextTicketNumber
将不会被定义。