Я пытаюсь использовать и 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();