Laravelのクエリビルダでnullの場合(nullでない場合)という条件を加える方法をメモ。
whereNotNull
テーブルは以下のような内容になっています。

UserAの先頭のレコードを取得して、idを返してみます。
PHP
<?php
namespace App\Http\Controllers;
use App\Sample;
class queriesController extends Controller
{
public function getIndex()
{
$data = Sample::where('username', 'UserA')->first();
$id = $data->id;
return var_dump($id); // int(11)
}
}
上記サンプルで取得したレコードのcreated_atはnullですが、created_atがnullではないレコードを取得するようにしてみます。
PHP
<?php
namespace App\Http\Controllers;
use App\Sample;
class queriesController extends Controller
{
public function getIndex()
{
$data = Sample::where('username', 'UserA')->whereNotNull('created_at')->first();
$id = $data->id;
return var_dump($id); // int(13)
}
}
UserAでcreated_atがnullではない先頭のレコードを取得できました。
whereNull
UserBの先頭のレコードを取得して、idを返してみます。
PHP
<?php
namespace App\Http\Controllers;
use App\Sample;
class queriesController extends Controller
{
public function getIndex()
{
$data = Sample::where('username', 'UserB')->first();
$id = $data->id;
return var_dump($id); // int(12)
}
}
今度は逆にcreated_atがnullのレコードを取得するようにしてみます。
PHP
<?php
namespace App\Http\Controllers;
use App\Sample;
class queriesController extends Controller
{
public function getIndex()
{
$data = Sample::where('username', 'UserB')->whereNull('created_at')->first();
$id = $data->id;
return var_dump($id); // int(14)
}
}
UserBでcreated_atがnullの先頭のレコードを取得できました。
【参考サイト】
コメントが承認されるまで時間がかかります。