使用 Laravel 预加载选择特定列不起作用

Sha*_*med 2 php sql laravel eloquent

我真的不明白为什么当我尝试返回特定列时这种急切加载不起作用。这段代码完美运行

$user=User::where('userName', $userName)
        ->with('points')
        ->with('examstaken')
        ->with('question')
        /*->with(array('points'=>function($query){
                $query->select('id','points');
         }))*/
         ->get();
Run Code Online (Sandbox Code Playgroud)

这段代码没有用

$user=User::where('userName', $userName)
        /*->with('points')*/
        ->with('examstaken')
        ->with('question')
        ->with(array('points'=>function($query){
                $query->select('id','points');
         }))
         ->get();
Run Code Online (Sandbox Code Playgroud)

不起作用意味着,“点”不返回任何值,而第一个正确返回值。

知道有什么问题吗?

这是我的用户模型中的关系

  public function points()
{
    return $this->hasMany('App\Points','user_id');
}
Run Code Online (Sandbox Code Playgroud)

谢谢..

Sha*_*med 5

好的解决了。看来我必须传递 user_id、外键,然后它们才能工作。将其发布为答案,因为其他人可能会获得帮助:)

$user=User::where('userName', $userName)
        /*->with('points')*/
        ->with('examstaken')
        ->with('question')
        ->with(array('points'=>function($query){
                $query->select('user_id','points');
         }))
         ->get();
Run Code Online (Sandbox Code Playgroud)

  • 如果您不选择关系所需的键,Eloquent 将无法通过键将孩子与其父母匹配 (2认同)