尝试从一对多关系中检索数据时获取空数组 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);
}
我正在一个允许学生搜索并获得房子的平台上工作。我正在尝试实现一项功能,允许学生根据代理 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);
}