嗨我有麻烦排序这个标题说我试图检查一条记录是否存在并返回一个布尔值而不是数据库中的记录值,所以我可以将它与过滤器形式进行比较,我知道这可以使用嵌套的if来解决,但我试图找到更好的方法,这是我的代码到目前为止
public function getSend(){
if($this->request->role==1){
$id= Cv::select('cv.user_id','cv.pub')
->where('cv.pub','==',$this->request->pub)
->get();
dd($id);
return view('gestione.'.$this->view_namespace.'.send.pagina');
}
我的想法是这样的
->where('cv.pub','==',$this->request->pub)
这个是有效的,因为" pub"在我的数据库中存储一个布尔记录,其他记录存储字符串,例如
->where('cv.something','==',$this->request->something)
不会起作用,因为"某事"是一个字符串,而不是一个布尔值,所以我怎么转#34;"基于是否存在的布尔值
事先感谢我使用laravel 5.1的方式
答案 0 :(得分:0)
您可以尝试这样的事情:
$id = Cv::select('cv.user_id','cv.pub') // select is not required here
->where('cv.pub','==',$this->request->pub)
->exists();
此外,您可以使用它:
if (Cv::where('cv.pub', $this->request->pub)->exists()) {
// The record exists, so do something...
}
如果存在,此查询将返回布尔值true,否则返回false。您也可以一次性根据$this->request->pub
有条件地进行查询,例如:
$exists = Cv::when($this->request->pub, function($query) {
$query->where('cv.pub', $this->request->pub);
})->exists();
if ($exists) {
// ...
}
答案 1 :(得分:0)
$something = !empty($this->request->something);
if($something) {
$exits = Cv::where('cv.'+$something, $something)->get();
if($exits) {
// Cv exits
}
}
答案 2 :(得分:0)
$result = Cv::select('cv.user_id','cv.pub')
->where('cv.pub','==',$this->request->pub);
if($request->something){
$result = $result->whereNotNull('cv.something'); // or != '', depending how you store it
}
这主要是过滤器的工作原理
答案 3 :(得分:0)
如果要返回布尔值,可以使用count()
:
$id= Cv::select('cv.user_id','cv.pub')
->where('cv.pub','==',$this->request->pub)
->count();
这将返回记录数,如果没有则返回0,如果找到则记录为1。显然这只有在找到1条记录时才会起作用,如果找到3条记录,这个解决方案就不会起作用,但是我从你所说的内容看起来似乎就是你将要返回的所有内容。
任何大于0的含义都表示存在一个值。