Laravel 5分页在非对象上调用成员函数render()

时间:2015-06-05 08:37:27

标签: pagination laravel-5

我正在尝试对某些类别进行分页,并且此错误从无处弹出,我不知道如何修复它:

  

在非对象

上调用成员函数render()

这是我的控制者:

public function getFilmeByCateg()
{
    $categorii = Categorii::all();
    //$Movies = Movies::all();
    $categorie = Request::segment(2);
    $cat = Categorii::where('denumire', '=',$categorie)->first();
    $cat2 = Categorii_filme::where('categorie_id', '=' ,$cat->categorie_id)->get();

$filme = array();

foreach($cat2 as $filmulet)
{

$film = Movies::where('movie_id','=',$filmulet->film_id)->paginate(12)->first();
$filme[] = $film;


}

 return view('filme')->with('Movies',$filme)->with('categorii',$categorii);
}

这就是我在布局中呈现分页器的方式:

{!!$Movies->render() !!}

这是我的路线:

Route::get('categorie/{categorie}','WelcomeController@getFilmeByCateg');

这是我的Movies.php:

class Movies extends Model {

protected $table = "movies";
}

有人可以告诉我如何才能使这项工作成功?

4 个答案:

答案 0 :(得分:0)

由于$filme是一个数组,因此您可以访问其所需对象为render()的{​​{1}}方法。

$Movies

此处foreach($cat2 as $filmulet) { $film = Movies::where('movie_id','=',$filmulet->film_id)->paginate(12)->first(); $filme[] = $film; } 是一个数组。

$filme

在这里,您将return view('filme')->with('Movies',$filme)->with('categorii',$categorii); 作为$filme变量传递。

$Movie

在这里,您想要访问{!!$Movies->render() !!} render()方法,而不是对象。

将您的控制器更改为:

$filme

答案 1 :(得分:0)

好的首先,你做错了。 使用中间类来表示数据透视表是完全错误的。

我会让它适合你。

您的类别

class Movie extends \Model {
   protected $table = 'movies';

   public function categories()
   {
      return $this->belongsToMany('Your\Namespace\To\Category');
   }
}

您的电影课程

public function getFilmeByCateg($category_id)
{
   $category = Category::findOrFail($category_id);

   return view('filme')->with('Movies',$category->movies()->paginate(12)->ge())->with('categorii',Category::all());   
}

您的路线仍然是:

  

路线::得到( 'categorie / {CATEGORY_ID}', 'WelcomeController @ getFilmeByCateg');

因此,在您的控制器方法中,您可以执行以下操作:

$Movies->render()

现在在您的视野中 menuLinkListView=(ListView) findViewById(R.id.menu_listview); observer= menuLinkListView.getViewTreeObserver(); observer.addOnGlobalLayoutListener(new OnGlobalLayoutListener() { boolean measured=false; @Override public void onGlobalLayout() { if(!measured){ listHeight=menuLinkListView.getHeight(); int spacing =0; int itemsPerRow = 2; adapter=new HomeMenuLinksListArrayAdapter(MainActivity.this,MyApplication.articles, listHeight); wrapperAdapter = new MultiItemRowListAdapter(MainActivity.this, adapter, itemsPerRow, spacing); menuLinkListView. setAdapter(wrapperAdapter); } // observer.removeGlobalOnLayoutListener(this); measured=true; } }); 将起作用

答案 2 :(得分:0)

如果您不对数据进行分页,您将如何呈现它?官方laravel网站上的文件说明:

  

有几种方法可以对项目进行分页。最简单的方法是在查询构建器或Eloquent模型上使用paginate方法。

分页数据库结果

$users = DB::table('users')->paginate(15);
  

注意:目前,Laravel无法有效地执行使用groupBy语句的分页操作。如果需要将groupBy与分页结果集一起使用,建议您查询数据库并手动创建分页器。

手动创建Paginator

  

有时您可能希望手动创建分页实例,   传递一个项目数组。你可以通过创建一个来完成   照亮\分页\ Paginator或   Illuminate \ Pagination \ LengthAwarePaginator实例,取决于您的   需要。

现在你应该首先

use Illuminate\Pagination\LengthAwarePaginator as Paginator;

然后

$paginator = new Paginator($items, $count, $limit, $page, [
        'path'  => $this->request->url(),
        'query' => $this->request->query(),
    ]);

请在上面的Paginator功能中相应地提供参数。

答案 3 :(得分:0)

我知道现在已经很晚了,但它会帮助那些陷入同样问题的人。而不是->get()在查询中使用->paginate(10)