laravel - 试图从另一个表中获取引用的 Laravel Eloquent 数据
问题描述
我只是在学习 Laravel,对于有该框架经验的人来说,这可能非常容易,但我试图从不同的表中获取数据,但不确定我做错了什么。
我有两个表,Users
,其中有字段first_name
,last_name
和pair_id
。该pair_id
列以编程方式限制为null
指定“对”的两行中的一个或一个整数。有confirmed_pair
一个表,每行有一对并且有一个唯一的pair_id
列,它指的是Users
表中的那个。
在 ConfirmedPair 模型中,我这样做了:
class ConfirmedPair extends Model
{
public function pair() {
return $this->hasMany(User::class, 'pair_id');
}
public function pair_names() { // returns an array of names of the players in the confirmed pair
$names = User::where("pair_id", $this->get(["pair_id"])[0]->pair_id)->get(['first_name','last_name']);
if (count($names) == 2) { // if this pair exists
return [
$names[0]['first_name']." ".$names[0]['last_name'],
$names[1]['first_name']." ".$names[1]['last_name']
];
}
return null;
}
}
在控制器中,我这样做了:
class PageController extends Controller
{
public function index()
{
$confirmed_pair = new ConfirmedPair;
return view('page', compact('confirmed_pair'));
}
}
如果我这样做,在刀片视图中:
@for ($i = 1; $i < 10; $i++)
{{ $confirmed_pair->find($i)->pair_names()[0] }}<br>
@endfor
无论$i
的值是什么,它都会返回 Confirmed_pair id #1 的值。
我究竟做错了什么?谢谢!
解决方案
如果pair_id
分配给 2 个用户
class ConfirmedPair extends Model {
public function pairs() {
return $this->hasMany(User::class, 'pair_id', 'pair_id');
}
public function pair_names() {
if ($this->pairs->count() != 2) return null;
// $this->pairs returns you a Collection of Users
// try to dd($this->pairs) to see in action
$pairs = $this->pairs->toArray();
return [
$pairs[0]['first_name']." ".$pairs[0]['last_name'],
$pairs[1]['first_name']." ".$pairs[1]['last_name']
];
}
}
可以做得更好,但对于您的情况,这应该可行。
推荐阅读
- laravel - 来自 GuzzleHttp 的 API 服务器阻止请求
- r - R - 过滤表以返回仅包含所有列中的所有搜索词的行
- excel-formula - 如何在excel中计算延迟收入
- opengl - 是否可以创建立方体贴图渲染缓冲区?
- ios - 如何在另一个视图中访问 ForEach 循环之外的索引?
- opencl - 相当于 OpenCL 中的 cudaSetDevice?
- ios - 带有 iOS 14 的 AppsFlyer
- python - 使用 pyodbc 更新 SQL Server
- javascript - 使用 Vue 显示表单的问题
- javascript - 如何在javascript中更改数组元素并获取新数组