我只是在学习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的值。
我在做什么错?谢谢!
答案 0 :(得分:0)
如果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']
];
}
}
可以做得更好,但针对您的情况,应该可以。