尝试从一对多关系中检索数据时获取空数组 Laravel

Getting an empty array when trying to retrieve data from a one to many relationship Laravel

我正在一个允许学生搜索并获得房子的平台上工作。我正在尝试实现一项功能,允许学生根据代理 post 对代理进行评分,以减少和缓和平台上的欺诈行为。即使在我建立了 User(agent) 和 AgentRating 之间的一对多关系之后,当我尝试检索代理评级时,我仍然得到 null。

AgentRating.php

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class AgentRating extends Model
{
    //
     public function user(){
        return $this->belongsTo(User::class);
    }
}

User.php

class User extends Model
{
     public function ratings(){
        return $this->hasMany(AgentRating::class);
    }
}

AgentRatingController.php

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\User;
use App\AgentRating;
use App\Http\Traits\AuthUserTrait;
use DB;


class AgentRatingController extends Controller
{
    //
    use AuthUserTrait;

    public function __construct(){
        $this->middleware(['jwt.auth', 'forceJson'], ['only' => ['store']]);
    }


    public function store(Request $request, $id){
        $this->validate($request, [
            "rating" => 'required'
        ]);

        $rating = new AgentRating;
        $user = User::find($id);
        $rating->user_id = $this->authUser()->id;
        $rating->agent_id = $user->id;
        $rating->rating = $request['rating'];
        $rating->save();
        dd($user->ratings); // This returns an empty array even though there is a rating saved to the DB.

    }
}

我认为您的 AgentRatingController 中有错字。

$rating->agent_id = $user->id; 行似乎有误。

$rating_id 应该是自动递增的,不可填充。不是吗?

此外,我建议您在编程时遵循 PSR-12 标准。 我的意思是,声明 属性 类型、函数返回值和空格,例如:

public function store(AgentRatingRequest $request, int $id): void
{
    AgentRating::create([
        'user_id' => auth()->id(),
        'rating' => $request['rating'],
    ]);

    dd($user->ratings);
}