Вызов функции-члена где () на не-объекте Laravel 4.2

Я пытаюсь использовать и id , который передается в URL для редактирования запроса, но при попытке запустить код я получаю сообщение об ошибке:

Вызов функции-члена, где () на не-объекте

контроллер

 class HomeController extends BaseController { public function showWelcome() { $id = intval($_GET['wab_id']); $results = DB::Table('films')->get()->where('wab_id','=', $id); print_r($results); while ($row=mysql_fetch_array($results)) { $url = $row['url']; } return View::make('hello')->with('row', $url); } } 

Я также пробовал:

 class HomeController extends BaseController { public function showWelcome() { $id = intval($_GET['wab_id']); $results = DB::Table('films')->get()->where('wab_id', $id); print_r($results); while ($row=mysql_fetch_array($results)) { $url = $row['url']; } return View::make('hello')->with('row', $url); } } 

Только для того, чтобы получить одно и то же сообщение об ошибке, и это единственный фрагмент, который не выбрал ошибку, но возвращает с ошибкой:

mysql_fetch_array () ожидает, что параметр 1 будет ресурсом, объект указан

 class HomeController extends BaseController { public function showWelcome() { $id = intval($_GET['wab_id']); $results = DB::Table("SELECT * FROM next WHERE wab_id=$id"); while ($row=mysql_fetch_array($results)) { $url = $row['url']; } return View::make('hello')->with('row', $url); } } 

маршрут

 Route::get('/', array( 'as' => 'home', 'uses' => 'HomeController@showWelcome' )); 

Вам нужно изменить порядок цепочки, чтобы поставить функцию where () перед функцией get (). Все, что после get () будет применяться к коллекции, а не к Query Builder.

Если вы хотите передать параметр через URL-адрес, попробуйте:

 // routes.php Route::get('/{wab_id}', array( 'as' => 'home', 'uses' => 'HomeController@showWelcome' )); 

Кроме того, ограничение where () должно быть до метода get() .

Теперь вы должны принять параметр URL в качестве аргумента в свою функцию HomeController#ShowWelcome

 class HomeController extends BaseController { public function showWelcome($wab_id) { $id = $wab_id; // where() constraint before the `get()` method. $results = DB::Table('films')->where('wab_id','=', $id)->get(); print_r($results); while ($row=mysql_fetch_array($results)) { $url = $row['url']; } return View::make('hello')->with('row', $url); } } 

Я пытался передать std-массив Obj в представление, но мне пришлось установить wab_id, потому что если бы я не получил неопределенный индекс wab_id next i $arrays = json_decode(json_encode($results), true); чтобы получить массив std, который я получал с использованием запроса в многоадресном массиве, затем зациклился на массиве и работал

Спасибо всем за вашу помощь.

контроллер

 class HomeController extends BaseController { public function showWelcome(){ $id = isset($_GET['wab_id'])?$_GET['wab_id']:""; $results = DB::Table('films')->where('wab_id', $id)->get(); $arrays = json_decode(json_encode($results), true); foreach ( $arrays as $film ) { } return View::make('hello')->with('film', $film); } } 

Вы получаете ошибку mysql_fetch_array, потому что, когда вы испортили порядок функций get () и where ()

  //you did it like this DB::table('films')->get()->where('wab_id','=', $id); //you did it like this, instead of DB::table('films')->where('wab_id','=', $id)->get(); 

get () игнорируется. поэтому результат не будет массивом;

РЕДАКТИРОВАТЬ :

Если вы используете вспомогательную функцию toArray (), вам не потребуется кодировать и декодировать ее как Json.

  //you can do so like this DB::Table('films')->where('wab_id','=', $id)->toArray(); //or this if thats too long $result = DB::table('films')->where('wab_id','=', $id); $array = $result->toArray();