我试图在Laravel Eloquent ORM中使用with()
方法调用,但得到以下错误。
传递给App\Http\Controllers\DashboardController::App\Http\Controllers{closure}()的参数1必须是Illuminate\Database\Eloquent\Builder的示例,Illuminate\Database\Eloquent\Relations\HasMany给定
我使用的是Laravel 6的最新版本。你知道是什么造成的吗?
控制器
class DashboardController extends Controller
{
public function __construct()
{
$this->middleware('auth:api');
}
public function formIndex(Request $request)
{
$id = auth()->user()->id;
$item = Groupe::find($id)->with(
[
'etudiants' => function (Builder $query) {
$query->select('id');
}
]
)->first();
return $item;
}
}
型号
class Groupe extends Authenticatable implements JWTSubject
{
public function etudiants()
{
return $this->hasMany('App\Etudiant');
}
}
3条答案
按热度按时间sirbozc51#
这个错误来自于你在$query变量上的类型提示,因为错误消息说传入的对象是一个关系,而不是一个原始的查询构建器。删除类型提示即可。另外,::find()执行一个查询,因此您将执行2个查询,请改用下面的查询
此外,您不需要使用回调语法来只即时加载某些列,回调语法用于对返回的记录设置约束。试试这个
kokeuurv2#
但你想要什么回报?groupe->students[]??你可以用
63lcw9qa3#
le probleme viens图斯simplement de limport du builder utilize ceci“use Illuminate\Contracts\Database\Eloquent\Builder;“