2016-07-18 6 views
0
matchthese=['name'=> Input::get('name'),]; 
Matchthose['place'=> Input::get('place')]; 
$Select_db = Db::table('actvities') 
       ->where([[matchthese],[matchthose]]) 
       ->orwhere('place', Input::get('place')) 
       ->orwhere('color', Input::get('color')) 
       ->orwhere('people',Input::get('people')) 
       ->get(); 

Но где-то не работает правильно. Мне нужен первый или второй. Как я должен это делать?Строительство, где запрос основан на вводе

+0

Первый, где работает отлично, но когда я выбираю только один из четырех цветов, имя, место людей и хочу, например, если я выбираю людей, чтобы пойти в или где люди спрашивают меня или дают мне неправильные результаты, кто-то может скажи мне почему ? – user3353610

+0

Вам нужно быть более четкими, каковы ваши текущие результаты и каков ваш ожидаемый результат. В настоящее время это неоднозначно, что вы хотите. «Я хочу первый или второй», вы имеете в виду, что хотите только один результат, а не коллекцию? Что вы имеете в виду, это дает вам «неправильные результаты». Приведите пример того, какие результаты вы получаете против ожидаемого – ExoticChimp

+0

Я хочу, чтобы запрос выполнялся или другой запрос каждый раз, когда один запрос должен выполняться на основе моего выбора пользователей, который может быть комбинацией места и цвета или просто цвета Я хочу, чтобы эти отношения. Я не уверен, что мой код верен. – user3353610

ответ

1

Вы можете использовать skip и take с first:

Например, для первой вы можете использовать first непосредственно:

$Select_db = Db::table('actvities') 
       ->where([['name', '=', Input::get('name')],['place', '=', Input::get('place')]]) 
       ->orwhere('place', Input::get('place')) 
       ->orwhere('color', Input::get('color')) 
       ->orwhere('people',Input::get('people')) 
       ->take(1)->first(); 

Для второго:

$Select_db = Db::table('actvities') 
       ->where([['name', '=', Input::get('name')],['place', '=', Input::get('place')]]) 
       ->orwhere('place', Input::get('place')) 
       ->orwhere('color', Input::get('color')) 
       ->orwhere('people',Input::get('people')) 
       ->skip(1)->take(1)->first(); 

Если вам нужно для прокрутки результата вы можете просто использовать foreach:

$Select_db = Db::table('actvities') 
       ->where([['name', '=', Input::get('name')],['place', '=', Input::get('place')]]) 
       ->orwhere('place', Input::get('place')) 
       ->orwhere('color', Input::get('color')) 
       ->orwhere('people',Input::get('people')) 
       ->get(); 
foreach($Select_db as $record) { 
    //Do something with $record. 
} 

Надеюсь, это поможет вам.

+0

Большое вам спасибо, я попробую, но мой proble - это мой или не работает, который работает неправильно, и мне нужно, например, первое, где нужно выполнить, что сделано правильно, но например, когда я выбираю только место для ввода, или не выполняется, он спрашивает меня за имя? – user3353610

+0

Пожалуйста, ознакомьтесь с обновленным ответом! –