Let me see if I'm getting this right. The final SQL statement you wanna get is something like this, right?
SELECT VendorZIP FROM Payment WHERE countries IN ('E92000001', 'L93000001', 'M83000003') AND counties IN ('95', 'E10000002', 'E10000002') AND gors in ('A', 'B', 'D')
Then the code would be something like this:
$query = Payment::query();
foreach ($input as $column => $values) {
$query->whereIn($column, $values);
}
$zip = $query->first()->VendorZIP;
Where Payment
should be an Eloquent model.
Ah, you made it look so simple :D That is what I am after but I made a slight mistake on my original post. The model is actually Extract which has a scope
method because the table name is dynamic. So the controller code would look something like;
query = Extract::fromTable($lookup->dataset);
foreach ($input as $column => $values) {
$query->whereIn($column, $values);
}
$zip = $query->first()->zip();
which doesn't work at the moment. How do I get this right using scope?
Scope method;
public function scopeFromTable($query, $tableName)
{
return $query->from($tableName);
}
Doesn't work how? What error does it return?
It looks almost right to me, except the last string should be (given that the field name you want is actually zip
):
$zip = $query->first()->zip;
Notice no parentheses after ->zip
.
Ah, yes. Taking off the parentheses works fine. And returning all the zips I have to do;
$zip[] = $query->select('zip')->get();
Nope, $query->get()
returns you a Collection of full rows (with all columns). You can then iterate this Collection, something like:
$rows = $query->get();
$zips = [];
foreach ($rows as $row) {
$zips[] = $row->zip;
}
But there's a handy function if you want just an array of values from a single column:
$zips = $query->lists('zip');
If you really want to get the hangs of Laravel's way of doing things, watch Laravel 5 Fundamentals video series. It's long (almost 6 hours), but if you are gonna work with Laravel, it's a worthy investment of your time.
Sign in to participate in this thread!
The Laravel portal for problem solving, knowledge sharing and community building.
The community