Проверьте, существует ли запись, верните логическое значение и сравните ее с входными данными из формы. - PullRequest
0 голосов
/ 10 мая 2018

Привет, у меня проблемы с сортировкой, поскольку в заголовке говорится, что я пытаюсь проверить, существует ли запись, и возвращает логическое значение вместо значения записи из базы данных, чтобы я мог сравнить его с формой фильтра, я знаю, что это может быть решена с помощью вложенного 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)

не будет работать, потому что «что-то» - это строка, а не логическое значение, так как мне превратить «что-то» в логическое значение, основанное на том, существует ли или нет

заранее спасибо, кстати, я использую laravel 5.1

Ответы [ 5 ]

0 голосов
/ 10 мая 2018

Если вы хотите вернуть логическое значение, вы можете использовать count():

$id= Cv::select('cv.user_id','cv.pub')
    ->where('cv.pub','==',$this->request->pub)
    ->count();

Это вернет количество записей, 0, если нет, 1, если одна найдена. Очевидно, это будет работать только в том случае, если найдена 1 запись, если найдено 3, это решение не будет работать, однако, исходя из того, что вы сказали, кажется, это все, что вы вернете.

Значение больше 0 означает, что значение существует.

0 голосов
/ 10 мая 2018
$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
}

Это в основном то, как работают фильтры

0 голосов
/ 10 мая 2018

Вы можете попробовать что-то вроде этого:

$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) {
    // ...
}
0 голосов
/ 10 мая 2018
$something = !empty($this->request->something);

if($something) {
    $exits = Cv::where('cv.'+$something, $something)->get();
    if($exits) {
        // Cv exits
    }
}
0 голосов
/ 10 мая 2018

Попробуйте,

->where('cv.something','==',!empty($this->request->something))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...