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

时间:2013-11-19 16:51:07

标签: php eloquent laravel-3

知道 这将是一个简单的,我看起来......我一定要错过它。
我已经有一段时间了,因为我已经在Laravel编码了(或者,就此而言:),我真的可以在正确的方向上使用微调。
仅供参考,这适用于REST-ish Web服务,因此实际上没有用户界面。

目标:
进程根据people表查找请求,其中请求可以是一个字段,五个字段,或两者之间的任何位置。
以下是$accessible字段:

  • fname
  • 英里
  • L-NAME
  • 又名
  • 性别

示例请求:

  • $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();

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

RECIEVING:
根据我现在正在尝试的内容,当我获得结果时,将返回整个表格 通过分析器,我能够看到它只是运行SELECT * FROM people

1 个答案:

答案 0 :(得分:0)

我不确定我是否理解但是使用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();