在非对象上调用成员函数 where() Laravel 4.2
Call to a member function where() on a non-object Laravel 4.2
我正在尝试使用 id
传递给 URL
来编辑查询,但是当尝试 运行 代码时,我得到一个错误:
Call to a member function where() on a non-object
控制器
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);
}
}
只会抛出相同的错误消息,这是唯一没有抛出错误但 returns 错误为:
的片段
mysql_fetch_array() expects parameter 1 to be resource, object given
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() 之后的任何内容都将应用于集合而不是查询生成器。
如果你想通过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 的未定义索引
$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();
我正在尝试使用 id
传递给 URL
来编辑查询,但是当尝试 运行 代码时,我得到一个错误:
Call to a member function where() on a non-object
控制器
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);
}
}
只会抛出相同的错误消息,这是唯一没有抛出错误但 returns 错误为:
的片段mysql_fetch_array() expects parameter 1 to be resource, object given
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() 之后的任何内容都将应用于集合而不是查询生成器。
如果你想通过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 的未定义索引
$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();