检查 Laravel 5.5 中是不是存在记录 [关闭]
Posted
技术标签:
【中文标题】检查 Laravel 5.5 中是不是存在记录 [关闭]【英文标题】:check if record exist in Laravel 5.5 [closed]检查 Laravel 5.5 中是否存在记录 [关闭] 【发布时间】:2018-06-01 10:41:35 【问题描述】:我有一个动态输入表单,我想检查记录是否存在,如果不存在则不能插入数据
我的控制器
$user = Master::where('id_a','=',$request->get('id_a'))->where('id_b','=',$request->get('id_b'))->get();
if($user->isEmpty())
// insert
else
//message "cannot input"
如果插入一个数据,成功..但如果在我的控制器中插入数组不检查.. 为什么在输入数组数据中总是插入???
【问题讨论】:
能否显示插入代码 $input = $request->all(); for ($i=0; $i get('id_b')); ++$i) $var = new Master; $var->value= $input['value'][$i]; $var->保存(); 如果插入一个数据,总是检查到数据库,但如果插入数组数据不检查。 是 $request->get('id_b') 包含一个数组。在这种情况下,您必须使用whereIn
而不是 where
@HoàngĐăng 如果使用 whereIn,我收到错误“为 foreach() 提供的参数无效”
【参考方案1】:
这是伪的,仅用于检查id_b
$data = [1,2,3,4];
$data_a = [1,2,3,4];
$masters = Master::whereIn('id_b', $data)->whereIn('id_a', $data_a)->get();
foreach($data as $key => $value)
$isExisted = false;
foreach ($masters as $master)
if ($master->id_b == $value[$key] && $master->id_a == $data_a[$key])
$isExisted = true;
break;
if ( ! $isExisted)
$master = new Banner();
$master->value = your_data;
$master->save();
【讨论】:
谢谢,但没用 :( 检查你的$request->get('id_a')
和 id_b
是一个数组,如果没有将它们解析为数组
如果你有代码在 github 我可以为你调试
我不使用 github.. 但谢谢.. 我签入 dd()
$request->get('id_b')
null.. 为什么?
重新检查浏览器。你发了吗【参考方案2】:
如果我理解正确,如果给定的id_a
和id_b
不存在一个Master
Master
如果是这样,您实际上可以使用firstOrCreate:
Master::firstOrCreate(
['id_a' => $request->get('id_a'), 'id_b' => $request->get('id_b')],
['yourcolumntocreate' => columnvalue, ...]
)
【讨论】:
如果我使用 firstOrCreate 旧数据已被替换.. 那你可以firstOrNew
,但我认为这不是你的问题...【参考方案3】:
你可以使用exists()
if(Master::where('id_a','=',$request->get('id_a'))->where('id_b','=',$request->get('id_b'))->exists())
do something
另外我建议你减少你正在做的内联内容的数量,而不是像这样:
$id_a = $request->get('id_a');
$id_b = $request->get('id_b');
if(Master::where('id_a','=', $id_a)->where('id_b','=',$id_b)->exists())
do something
【讨论】:
$id_a, $id_b 是他的case的数组以上是关于检查 Laravel 5.5 中是不是存在记录 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章
如何检查记录是不是已经存在,然后在 laravel 中更新或插入?