Php 调用未定义的方法illumb\Database\Query\Builder::post()
我在使用查询生成器时遇到了一个问题,查询生成器在路由文件中使用Php 调用未定义的方法illumb\Database\Query\Builder::post(),php,laravel,eloquent,laravel-5.2,query-builder,Php,Laravel,Eloquent,Laravel 5.2,Query Builder,我在使用查询生成器时遇到了一个问题,查询生成器在路由文件中使用post()时会出现未定义的方法错误 通常我使用的是 User::find($id)->post; 但当我调用post作为函数时,它不起作用,并给出: 调用未定义的方法illumb\Database\Query\Builder::post() 用户模型 <?php namespace App; use Illuminate\Foundation\Auth\User as Authenticatable; clas
post()
时会出现未定义的方法错误
通常我使用的是
User::find($id)->post;
但当我调用post
作为函数时,它不起作用,并给出:
调用未定义的方法illumb\Database\Query\Builder::post()
用户模型
<?php
namespace App;
use Illuminate\Foundation\Auth\User as Authenticatable;
class User extends Authenticatable
{
protected $fillable = [
'name', 'email', 'password',
];
protected $hidden = [
'password', 'remember_token',
];
protected function post()
{
return $this->hasOne('App\Post');
}
}
Route::get('/', function () {
return view('welcome');
});
Route::get('/user/{id}/post',function($id){
return User::find($id)->post()->get();
});
试试这个:
路线
Route::get('/', function () {
return view('welcome');
});
Route::get('/user/{id}/post',function($id){
return User::find($id)->post()->get();
});
Route::get('/user/{id}/post',function($id){
return User::with('post')->find($id);
});
用户类中的post()
方法必须是公共的。现在它是受保护的,这意味着外部类无法访问它
用户类中的post()方法必须是公共的。现在它是受保护的,这意味着外部类无法访问它。
~@jackel414
正如Jackel414所提到的,您的post()
函数受到保护,需要公开才能访问
我注意到您正在一对一关系上运行get()
函数,此函数旨在返回数据集合,除非您将id作为参数传递,否则最好使用以下示例:
return User::find($id)->post;
return User::find($id)->post();
或
或者,您可以将构建器带回以进一步扩展查询