我知道这将是一个简单的问题,我已经看了。。。我一定是错过了。
我已经有一段时间没有用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();