Php 如何设置Laravel中是否存在记录的布尔值?

Php 如何设置Laravel中是否存在记录的布尔值?,php,mysql,laravel,laravel-4,Php,Mysql,Laravel,Laravel 4,我试图根据表中是否存在记录来设置布尔值$bln 这就是我一直在尝试的: $bln = (bool) DB::table('accounts')->where('name', $name)->pluck('id'); 由于某些原因,$bln似乎总是设置为true。我做错了什么?我猜id是一个integer而不是boolean类型?我真的希望是这样!呵呵。 您要做的是获取给定帐户的id,并将其强制转换为bool 如果您将值强制转换为bool,只要它的计算结果不为false,则该值将为t

我试图根据表中是否存在记录来设置布尔值
$bln

这就是我一直在尝试的:

$bln = (bool) DB::table('accounts')->where('name', $name)->pluck('id');

由于某些原因,
$bln
似乎总是设置为
true
。我做错了什么?

我猜
id
是一个
integer
而不是
boolean
类型?我真的希望是这样!呵呵。
您要做的是获取给定
帐户的
id
,并将其强制转换为
bool

如果您将值强制转换为
bool
,只要它的计算结果不为false,则该值将为true,在
整数
情况下,当您将其强制转换为
bool
时,只有
0
将被计算为false


检查结果计数是否大于
0
,它应该给出您想要的结果。

要实现这一点,您可以使用
count()
方法:

$bln = DB::table('accounts')->where('name', $name)->count() > 0;
如果以后需要该对象,请加载该对象并使用
is\u null()
进行检查:

$object = DB::table('accounts')->where('name', $name)->first();
$bln = !is_null($object);
因为pull()返回一个数组,所以可以使用count检查它
$bln=(bool)计数(DB::table('accounts')->where('name',$name)->pull('id')
这是一个

请试试这个

$bln = DB::table('accounts')->where('name', $name)->get()->first();
if(isset($bln) && $bln != null || $bln != ''){
    return $bln = 1;
}
else{
    return $bln = 0;
}
exists()
doesntExist()
方法直接给出一个布尔值,使用它们代替
count()


:确定记录是否存在

为什么不直接做
$bln=DB::table('accounts')->where('name',$name)->count()>0
?是的,我似乎把它复杂化了。这段代码会将所有帐户加载到内存中,然后才会得到第一个帐户。所以根本不需要(bool)?@Urbycoz。在这两种情况下,您都会得到
布尔值。谢谢。我现在明白了。这段代码将把所有帐户的ID加载到内存中,这是个坏主意。想象一下,若你们有成千上万的账户。如果我们谈论性能,你的答案会更好@AlexeyMezenin!我只想说明pullg()的正确用法。Larvel 4实际上返回了一个值。这只是在5.1中有所改变(我想)。这是标签laravel 4实际上你是对的@apokryfos,谢谢你的评论。谢谢,是的,这是一个整数。我不知道我为什么要费心把它包括进去。
$bln = DB::table('accounts')->where('name', $name)->exists();