php - 尝试从一对多关系 Laravel 检索数据时获取空数组
问题描述
我正在一个平台上工作,该平台允许学生搜索并获得房屋。我正在尝试实现一项功能,允许学生根据代理发布的内容对代理进行评分,以减少和缓和平台上的诈骗。即使在 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);
}
}
用户.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);
}
推荐阅读
- oracle - TNS-12541:TNS:输入 ./sqlplus anju/XXXX@999.000.0.000/ORA12C 时没有侦听器
- java - ImageView 没有根据屏幕大小调整
- python - 在 Python 中迭代包含字符串的大列表的最快方法是什么?
- javascript - 在渲染 UI 之前,如何从 async/await 函数中获取数据?
- laravel - Laravel:如何设置消耗品购买?
- python - fedora 的 python-boto3 和 python2-boto3 rpms 有什么区别?
- java - 获取kafka分区中的最后一条记录偏移量
- c# - 如何用十六进制值初始化 int?
- git - 不想将 staging 分支上的所有功能都带入 master
- python - 即使在定义 form_valid 之后,Django 中的 IntegrityError