I have problems with Laravel query. So I have a table that have 4 properties that I need to check, and table looks like:
product_id | partner_id | employer_id | type
So partner_id
is setted in Config
and there can be multiple different partners, as well as products and employers, type
can be white
or black
. Employers are array so I need to check them with whereIn
or whereNotIn
.
So what I need to check is, where type
is white
, and not current partner and not current employers to list all rows from that table.
So I did something like
ProductListing::whereNotIn('employer_id', $employers)
->where('type', 'white')
->where('partner_id', '!=', $partner_id)
->pluck('product_id')
->toArray();
But this query is not working as expected. I should probably check every row for partner
and then list whereNotIn
, but I have no idea how. Any ideas how to fix it?
CodePudding user response:
Use where with a !=
operator in combination with whereNull
.
where('employer_id', '!=' , $employers)->orWhereNull('employer_id')
CodePudding user response:
you can check Basic Where Clauses in docs to see that inequality sign is <>
// from docs
$users = DB::table('users')
->where('votes', '<>', 100)
->get();
// your fixed query
ProductListing::whereNotIn('employer_id', $employers)
->where('type', 'white')
->where('partner_id', '<>', $partner_id)
// as you mentioned that you want to list all suitable rows,not just product ids
->get();