Is there a shorter & elegant way to instruct the first method in eloquent to pick up the matching records using a custom preference order?
Example: ( pick up config A then B then Default )
$config = Configs::whereIn('section', ['A','B', 'default'])
->first() // Picks A or B or default;
To eliminate having to write a code like the following
$config = Configs::where('section', 'A');
if(!$config)
config = Configs::where('section', 'B');
elseif(!$config)
config = Configs::where('section', 'default');
CodePudding user response:
You can simply provide some ordering based on section and ->first() will select the "correct" record:
$config = Configs::whereIn('section', ['A', 'B', 'default'])
->orderBy('section')
->first();
If section: A is present, then $config will be A, will an implicit fallback to section: B or section: default based on ordering.
Edit: Config:: -> Configs::, but remember, Laravel Model names are Singular by convention.
