我正在尝试对某些类别进行分页,并且此错误从无处弹出,我不知道如何修复它:
在非对象
上调用成员函数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";
}
有人可以告诉我如何才能使这项工作成功?
答案 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)
。