ten*_*nub 0 php laravel eloquent laravel-4
为了更好地解释这个问题,我将举一个例子:
假设我有一个世界记录数据库,并希望为它创建一个api.假设我想添加一个接收search路径GET或POST参数(让我们保持简单,GET现在就说).是否有可能编写一个search控制器方法,它使用类似数组的东西作为Eloquent where方法的参数,同时还使用like参数(MySQL LIKE)?
我有以下工作,但仅适用于确切的值:
public function search()
{
$params = Input::all();
return Records::where($params)->get();
}
Run Code Online (Sandbox Code Playgroud)
你应该能够:
public function search()
{
$params = Input::all();
$query = Records::newQuery();
foreach($params as $key => $value)
{
$query->where($key, 'LIKE', "%$value%")
}
return $query->get();
}
Run Code Online (Sandbox Code Playgroud)
在范围的上下文中,您可以获得更好的:
class User extends Eloquent {
public function scopeFilter($query, $input = null)
{
$input = $input ?: Input::all();
foreach($input as $key => $value)
{
if (Schema::hasColumn($this->getTable(), $key))
{
$query->where($key, 'LIKE', "%$value%")
}
}
return $query;
}
}
Run Code Online (Sandbox Code Playgroud)
然后你可以这样做:
$filtered = User::filter()->get();
Run Code Online (Sandbox Code Playgroud)
要么
$filtered = User::filter(Input::only('name', 'age'))->get();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
129 次 |
| 最近记录: |