我对Laravel相当新,我开始建立关系。我很快就得到了一些相当容易的东西,但我正在努力争取一些更先进的东西。
基本上,我有三件事:
在每个联系人的下方,我可以保存片刻,我对联系人做了不同的事情。 每个时刻也可以与目标相关联。
现在,我正在尝试创建一个显示我所有目标的页面,在该页面下将显示我的每个时刻,并且对于每个时刻,我想要一些关于时刻所附加的基本信息。
以下是我的表格设置方式:
目标表:
- id - Goal name - Goal description
时刻表:
- id - userId - goalId - Moment name - Description
用户表
- id - firstname - lastname
所以我得到了:
class Goal extends Model
{
public function contact() {
return $this->belongsTo('App\Contact');
}
public function moments() {
return $this->hasMany('App\Moment', 'goalId');
}
}
我已尝试使用以下代码获取所有结果:
$goals = Goal::with('moments', 'contact')
->where('authId', Auth::id())
->where('hidden', 'false')
->get();
dd($goals);
但是所有联系人都返回为空...我尝试了不同的事情,但还没有能够解决这个问题。
它是否使用hasManyThrough或类似的东西?
编辑:所以我已经能够将它们全部放在一起,但不是按照我想要的顺序。 使用:
public function contact() {
return $this->belongsTo('App\Contact', 'userId');
}
public function goal() {
return $this->belongsTo('App\Goal', 'goalId', 'id');
}
$moments = Moment::with('goal', 'contact')
->where('authId', Auth::id())
->where('hidden', 'false')
->get();
dd($moments);
我现在有一个$ moment对象,它有正确的目标和联系人的链接,除了我希望能够按目标排序,这是否可行?
感谢您的帮助!
干杯, 标记
使用以下方法解决它:
public function contacts() {
return $this->hasMany('App\Contact', 'id', 'userId');
}
public function moments() {
return $this->hasMany('App\Moment', 'goalId');
}
$goals = Goal::with('moments', 'moments.contact')
->where('authId', Auth::id())
->where('hidden', 'false')
->get();
dd($goals);
答案 0 :(得分:1)
使用以下方法解决它:
public function contacts() {
return $this->hasMany('App\Contact', 'id', 'userId');
}
public function moments() {
return $this->hasMany('App\Moment', 'goalId');
}
$goals = Goal::with('moments', 'moments.contact')
->where('authId', Auth::id())
->where('hidden', 'false')
->get();
dd($goals);