我正在尝试根据表中是否存在记录来设置布尔值$bln
。
这就是我一直在尝试的:
$bln = (bool) DB::table('accounts')->where('name', $name)->pluck('id');
出于某种原因$bln
似乎总是设置为true
。我做错了什么?
答案 0 :(得分:3)
要实现此目的,您可以使用count()
方法:
$bln = DB::table('accounts')->where('name', $name)->count() > 0;
如果您以后需要该对象,请加载该对象并使用is_null()
进行检查:
$object = DB::table('accounts')->where('name', $name)->first();
$bln = !is_null($object);
答案 1 :(得分:1)
我猜测id
是integer
而不是boolean
类型?嗯,我真的希望它是!嘿嘿。
您要做的是获取给定id
的{{1}}并将其投放到account
。
如果您将值转换为bool
,只要在bool
情况下不评估为 false ,它就会为真将integers
强制转换为0
时,我会将其评估为 false 。
检查结果计数是否大于bool
,并且它应该给出您想要的结果。
答案 2 :(得分:1)
因为pluck()返回一个数组,你可以用count来检查它
$bln = (bool) count(DB::table('accounts')->where('name', $name)->pluck('id'));
这是Laravel Documentation: pluck()
答案 3 :(得分:0)
请试一试。
$bln = DB::table('accounts')->where('name', $name)->get()->first();
if(isset($bln) && $bln != null || $bln != ''){
return $bln = 1;
}
else{
return $bln = 0;
}
答案 4 :(得分:0)
exists()
和doesntExist()
方法直接提供了布尔值,请使用它们代替count()
。
$bln = DB::table('accounts')->where('name', $name)->exists();
Laravel Docs:确定记录是否存在