如何使用一个语句获得不同的查询(模型)结果? - laravel

时间:2015-07-17 17:40:57

标签: php database laravel model eloquent

很抱歉,如果我的标题令人困惑,不知道如何在一行内解释。让我们说我有一个包含一些列的表格,我有这个

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

但是有没有办法让两个变量变得更容易?

1 个答案:

答案 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将不会被定义。

相关问题