Laravel 3,Eloquet:SELECT具有多个WHERE条件


Laravel 3, Eloquent: SELECT with multiple WHERE conditions

知道这将是一个简单的问题,我已经看了。。。我一定是错过了。
我已经有一段时间没有用Laravel编码了(或者,就这一点而言:),我真的可以朝着正确的方向推动
仅供参考,这是一个REST式的web服务,所以实际上没有UI。

目标:
根据people表处理Find请求,其中请求可以是一个字段,也可以是五个字段,或者介于两者之间的任何字段
以下是$accessible字段:

  • fname
  • mi
  • lname
  • aka
  • 性别

请求示例:

  • $input = array('aka'=>'sammy','gender'=>'female')
  • $input = array('fname'=>'william','aka'=>'will')
  • $input = array('fname'=>'william','lname'=>'smith')
  • $input = array('lname'=>'smith')
  • 等等。,等等

尝试:
A)

$payload = new PersonEntity( (array)$input ); 

B)

$model = new PersonEntity( (array)$input );  
$payload = $model->get();

C)

$model = new PersonEntity;
foreach( $input AS $field => $value )
{
    if( in_array($field, $model::$accessible))
    {
        $model->where( $field, '=', $value );
    }
}
$results = $model->get();

预期:
我期望返回与请求匹配的对象数组。

接收:
根据我目前正在尝试的内容,当我得到结果时,会返回整个表
通过探查器,我可以看到它只是在运行SELECT * FROM people

我不确定我是否理解,但有了Laravel,你可以用这种方式连锁条件:

$model = DB::table('people');
$model = $model->where(function($model)
{
    foreach( $input AS $field => $value )
    {
        if( in_array($field, $model::$accessible))
        {
            $model->where( $field, '=', $value );
        }
    }
});
$results = $model->get();