Reputation: 113
I try to make an exception for my function where is address is null
, it did not have to print out the null value.
Here is my function:
if (UserAddress::where('address_2', '=', 'null')) {
$a = UserAddress::select("*", DB::raw("CONCAT(user_addresses.address_1,' ',user_addresses.address_2,' ',user_addresses.city,' ' ,user_addresses.postcode,' ',user_addresses.state) as full_address"))->pluck('full_address');
}else{
$a = UserAddress::select("*", DB::raw("CONCAT(user_addresses.address_1,' ',user_addresses.address_2,' ',user_addresses.city,' ' ,user_addresses.postcode,' ',user_addresses.state) as full_address"))->pluck('full_address');
}
When I die dump $a
, the first produce null
query.
Upvotes: 0
Views: 400
Reputation: 113
I solve it. Use empty string with CONCAT_WS
DB::raw("CONCAT_WS('',user_addresses.address_1,...
Upvotes: 0
Reputation: 1833
You cannot use arithmetic comparison operators such as =
, <
, or <>
to test for NULL
.
Instead of where('address_2', '=', 'null')
, try using the whereNull()
function like so:
if (UserAddress::whereNull('address_2')) {
$a = UserAddress::select("*", DB::raw("CONCAT(user_addresses.address_1,' ',user_addresses.address_2,' ',user_addresses.city,' ' ,user_addresses.postcode,' ',user_addresses.state) as full_address"))->pluck('full_address');
}else{
$a = UserAddress::select("*", DB::raw("CONCAT(user_addresses.address_1,' ',user_addresses.address_2,' ',user_addresses.city,' ' ,user_addresses.postcode,' ',user_addresses.state) as full_address"))->pluck('full_address');
}
It can help to enable the query log to see what exactly you are querying on the database, then you can run it directly via phpmyadmin (or whatever you are using). Place DB::enableQueryLog();
before you query, and //dd(DB::getQueryLog())
after the query is executed for troubleshooting.
Upvotes: 1