Laravel:检查 MySQL 查询是否有结果

Fer*_*art 3 php mysql laravel laravel-5

第一个 Laravel 项目。我有一个控制器功能,用于检查是否有任何带有该条形码的记录。如果没有插入记录。如果是,则为计数加一。

public function sellmode(Request $request){
    $barcode=$request->barcode;
    $test = DB::select('select count from sellmode where barcode = ?', [$barcode]);
    $row_cnt = mysqli_num_rows($test);
    if ($row_cnt == 0) {
        Debugbar::info('Új sor');
        DB::insert('insert into sellmode (barcode, count) VALUES (?, ?)', [$barcode, '1']); 
    } else {
        Debugbar::info('Meglév? frissítése');
        DB::update('update sellmode set count = count + 1 WHERE barcode = ?' [$barcode]);
    }
    return view(sell);
Run Code Online (Sandbox Code Playgroud)

}

当我尝试它时,它有以下错误:

SellController.php 第 17 行中的 ErrorException:mysqli_num_rows() 期望参数 1 为 mysqli_result,给定数组

我做错了什么?

Jer*_*dev 10

你不能只mysql_num_rows在 Laravel 查询构建器上。Laravel 查询生成器将返回一个集合,因此您可以使用该isEmpty函数来查看它是否有任何结果。

if ($test->isEmpty()) {
    Debugbar::info('Új sor');
    DB::insert('insert into sellmode (barcode, count) VALUES (?, ?)', [$barcode, '1']); 
} else {
    Debugbar::info('Meglév? frissítése');
    DB::update('update sellmode set count = count + 1 WHERE barcode = ?' [$barcode]);
}
Run Code Online (Sandbox Code Playgroud)

如果您使用的是 Laravel 5.3 之前的版本,则查询构建器将返回一个数组。在这种情况下,你可以count在这个数组上使用 php函数来知道返回了多少行

if (count($test) === 0) {
    Debugbar::info('Új sor');
    DB::insert('insert into sellmode (barcode, count) VALUES (?, ?)', [$barcode, '1']); 
} else {
    Debugbar::info('Meglév? frissítése');
    DB::update('update sellmode set count = count + 1 WHERE barcode = ?' [$barcode]);
}
Run Code Online (Sandbox Code Playgroud)