我正在一个允许学生搜索并获得房屋的平台上工作。我正在尝试实现一项功能,该功能允许学生根据代理发布的内容对代理进行评分,以减少和缓解平台上的欺诈行为。即使我在User(agent)和AgentRating之间建立了一对多关系,当我尝试检索座席评级时,我仍然为空。
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.
}
}
答案 0 :(得分:0)
我认为您的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);
}