Laravel5.4、PHP5.6を使用して、必要情報を渡すとJSONデータを返すAPIを作成しています。
データベースのカラム内にnullか空文字が入っている場合があります。
これをJSONで返却する時、そのカラムが消去された状態で書き出されてしまいます。(データが入っている場合は正常に動きます)
これをカラムのある状態で返したいのですが、良い方法はありますか?
データベース(単純化した例なので「なんでnullと空文字のどちらも入るのか」は無視してください)
id | name | |
---|---|---|
1 | 太郎 | hoge@example.com |
2 | 花子 | (null) |
3 | ジョン | (空文字) |
取得と返却
$customer = Customer::where('id', 番号)->first();
return $customer;
結果のJSON
{"id":1,"name":"太郎","email":"hoge@example.com"}
←これは問題無し
{"id":2,"name":"花子"}
←emailが無い
{"id":3,"name":"ジョン"}
←emailが無い
希望形
{"id":2,"name":"花子","email":null}
←nullの代わりに空文字でもいい
{"id":3,"name":"ジョン","email":""}
←少なくともこんな形で出てほしい
データ取得後にfor等使って1項目毎に判定・置き換えすればいいのかもしれませんが、もっとシンプルに出来る方法は無いのかと思い質問しました。
よろしくお願いいたします。
(2018/08/31 17:15追記)
すみません、ちゃんと確認したら発生条件が間違っていました。
以下の場合は正しくnullまたは空文字が入ったJSONが取得出来ました。
$customer = Customer::where('id', 番号)->first();
return $customer;
問題はcreateした時で、
$customer = Customer::create( ['name'=>'ジェーン'] );
return $customer;
(emailのデフォルト値はNULLとDB上で指定している)
このようにした場合、JSONはemailが無い状態での返却になります。
これはLaravelの仕様なのでしょうか?