我有3个模特
User
Pick
Schedule
我正在尝试执行以下操作
$picksWhereGameStarted = User::find($user->id)
->picks()
->where('week', $currentWeek)
->first()
->schedule()
->where('gameTime', '<', Carbon::now())
->get();
此代码仅返回集合中的一个数组。如果结果超过1,我希望它返回多个数组。
我可以用->first()
替换其他可以让我返回1个以上结果的内容。
如果不能,我如何设置我的模型关系以使其能够正常工作。
我的模型目前设置如下。
用户模型
public function picks()
{
return $this->hasMany('App\Pick');
}
计划模型
public function picks()
{
return $this->hasMany('App\Pick');
}
选择模型
public function user()
{
return $this->belongsTo('App\User');
}
public function schedule()
{
return $this->belongsTo('App\Schedule');
}
答案 0 :(得分:1)
由于您已经拥有User
模型(在find
方法中使用$user->id
方法),因此您只需加载其Pick
关系并加载Pick
关系Schedule
1}} S&#39; schedules
如下:
修改强>
假设您有一个picks
表,而您的schedule_id
表格中有一个$user->load(['picks' => function ($q) use ($currentWeek) {
$q->join('schedules', 'picks.schedule_id', '=', 'schedules.id')
->where('schedules.gameTime', '<', Carbon::now()) // or Carbon::now()->format('Y-m-d'). See what works.
->where('picks.week', $currentWeek);
}])->load('picks.schedule');
列。试试这个。
user
编辑:上面的代码应该返回picks
schedules.gameTime < Carbon::now()
$user
尝试并转储Eloquent
对象以查看加载的关系。这是您想要的$user->toArray()
方式。
提示:在转储$user
之前,您可能需要picks
才能更好地查看数据。
修改强>
加载的Collections
将采用foreach ($user->picks as $pick) {
echo $pick->schedule->gameTime;
}
的形式,因此您必须使用循环访问它。请尝试以下方法:
pick
如果您只想要用户提供的第一个$user->picks->first()->schedule->gameTime
:{{1}}
答案 1 :(得分:0)
我认为foreach循环可能是您正在寻找的东西:
Sub test()
'click action 'when cell(1,1) is clicked and if cells(1,1) is 1, msgbox saying "hi" will show up, if not nothing If Cells(1, 1) = 1 Then
MsgBox "hi"
Else
End If
End Sub
试试这个,看看它是否适合你