检查 Laravel 中是不是存在记录不起作用
Posted
技术标签:
【中文标题】检查 Laravel 中是不是存在记录不起作用【英文标题】:Checking if record exists in Laravel not working检查 Laravel 中是否存在记录不起作用 【发布时间】:2021-06-28 01:32:23 【问题描述】:我这样做是为了检查是否存在带有 chasis_number 的记录。如果它不存在插入数据,如果它不插入。但它不起作用。
$chunks = $insert_data->chunk(500);
$owner = Owner::where('chasis_number', '=', request()->get('chasis_number'))->first();
foreach ($chunks as $chunk)
if ($owner === null)
Owner::insert($chunk->toArray());
【问题讨论】:
检查dd($owner )
你从中得到了什么,因为正如你的声明所说,如果所有者返回 null 然后插入数据,否则它可能不会返回 null 值所以在 else 块中放入一些东西到检查它像if ($owner === null) Owner::insert($chunk->toArray()); elsereturn " owner is existed";
【参考方案1】:
您可以使用exists
,而不是使用第一种方法来确定是否存在任何符合查询约束的记录$ownerExist = Owner::where('chasis_number', '=', request()->get('chasis_number'))->exists();
if ($ownerExist== true)
Owner::insert($chunk->toArray());
【讨论】:
它根本不存储任何数据。也许它返回 null。【参考方案2】:firstOrCreate 方法将尝试使用给定的列/值对来定位数据库记录。如果在数据库中找不到模型,则将插入一条记录,其中包含将第一个数组参数与可选的第二个数组参数合并后的属性:
https://laravel.com/docs/8.x/eloquent#retrieving-or-creating-models
【讨论】:
firstOrCreate 方法是否适用于块?以上是关于检查 Laravel 中是不是存在记录不起作用的主要内容,如果未能解决你的问题,请参考以下文章
检查数组中是不是存在迭代器时,array.includes 不起作用[重复]