Laravel模型函数返回模型对象而非帖子数组的问题修复
问题分析与修复方案
你的问题出在控制器里没有正确接收模型方法返回的帖子数据,反而把模型实例本身传给了视图,所以才会返回模型对象而不是用户的帖子集合。
具体问题点
你在控制器里写了这两段代码:
$getPosts = new posts_model(); $getPosts->my_posts();
这里$getPosts一开始是posts_model的实例,调用my_posts()后没有把方法返回的帖子数据重新赋值给$getPosts,所以最终传给视图的还是模型对象,而不是查询到的帖子结果。
修复方案(两种可选)
方案1:直接调用静态方法(推荐)
因为你的my_posts()是静态方法,完全不需要实例化模型,直接通过类名调用即可:
public function myPosts(){ // 直接调用静态方法获取帖子数据 $getPosts = posts_model::my_posts(); return view("myposts",["posts" => $getPosts]); }
方案2:实例化模型后接收返回值
如果一定要实例化模型,记得把方法的返回值存到变量里:
public function myPosts(){ $postModel = new posts_model(); // 接收my_posts()返回的帖子数据 $getPosts = $postModel->my_posts(); return view("myposts",["posts" => $getPosts]); }
额外小建议
Laravel里模型类的命名通常遵循大驼峰规范,比如PostsModel,这样更符合框架的编码习惯,不过这只是规范问题,不影响功能正常运行。
内容的提问来源于stack exchange,提问作者Grigory Volkov
相关产品推荐
相关产品推荐

