Php Laravel从外键获取数据
我有两个表,一个叫Php Laravel从外键获取数据,php,laravel,eloquent,foreign-keys,Php,Laravel,Eloquent,Foreign Keys,我有两个表,一个叫Submission一个叫AssignSubmission public function assignsubmission() { return $this->belongsTo('App\AssignSubmission'); } public function submissions() { return $this->hasMany('App\Submission'); } App\Submission::with('assignsubm
Submission
一个叫AssignSubmission
public function assignsubmission()
{
return $this->belongsTo('App\AssignSubmission');
}
public function submissions()
{
return $this->hasMany('App\Submission');
}
App\Submission::with('assignsubmission')->get();
提交
属于分配提交
public function assignsubmission()
{
return $this->belongsTo('App\AssignSubmission');
}
public function submissions()
{
return $this->hasMany('App\Submission');
}
App\Submission::with('assignsubmission')->get();
AssignSubmission
有许多Submission
public function assignsubmission()
{
return $this->belongsTo('App\AssignSubmission');
}
public function submissions()
{
return $this->hasMany('App\Submission');
}
App\Submission::with('assignsubmission')->get();
它们与外键链接
在
AssignSubmission
中有id
,user\u id
和submission\u id
外键是submission\u id。
在提交表中,它有id
、user\u id
和file
、url
等
在
AssignSubmission
submission\u id
->链接到->submission
id
。
我已将不同的提交分配给2个用户。
如何从外键获取数据?
我想在视图中显示url或文件
如果您使用的是laravel关系。然后您可以这样做:(假设您的提交表模型名为
submission
public function assignsubmission()
{
return $this->belongsTo('App\AssignSubmission');
}
public function submissions()
{
return $this->hasMany('App\Submission');
}
App\Submission::with('assignsubmission')->get();
如果您已经有一个
提交
对象$Submission
$submission->assignSubmission->url
将为您提供url
它将属性名转换为camalCase。我认为您的关系可能是反向的 提交:
public function assignSubmissions()
{
return $this->hasMany(AssignSubmission::class);
}
public function submission()
{
return $this->belongsTo(Submission::class);
}
public function assignSubmissions()
{
return $this->hasMany('App\Submission');
}
public function submission()
{
return $this->belongsTo('App\AssignSubmission');
}
提交:
public function assignSubmissions()
{
return $this->hasMany(AssignSubmission::class);
}
public function submission()
{
return $this->belongsTo(Submission::class);
}
public function assignSubmissions()
{
return $this->hasMany('App\Submission');
}
public function submission()
{
return $this->belongsTo('App\AssignSubmission');
}
你写错了关系,应该是这样的 提交:
public function assignSubmissions()
{
return $this->hasMany(AssignSubmission::class);
}
public function submission()
{
return $this->belongsTo(Submission::class);
}
public function assignSubmissions()
{
return $this->hasMany('App\Submission');
}
public function submission()
{
return $this->belongsTo('App\AssignSubmission');
}
提交:
public function assignSubmissions()
{
return $this->hasMany(AssignSubmission::class);
}
public function submission()
{
return $this->belongsTo(Submission::class);
}
public function assignSubmissions()
{
return $this->hasMany('App\Submission');
}
public function submission()
{
return $this->belongsTo('App\AssignSubmission');
}
为了得到结果,我正在考虑提交,提交是你的模型,所以你可以获取
$submission = App\Submission::find(1)->assignSubmissions;
$assignSubmissions = App\AssignSubmissions::find(1)->submission;
查看此链接以获取更多参考信息您应该尝试以下方法:
提交模型
分配提交模型
在我的例子中,提交的id是AssignSubmissiom外键。
assignsubmission=Submission::with('assignsubmission')->get();
我没有得到它。assignsubmission
只有一个提交
?如果“assignsubmission\u id->链接到->提交id”那么,您的关系是反向的!具有外部id的表属于另一个表。因此,由于AssignSubmissions
表具有submission\u id
,因此AssignSubmissions
属于Submissions
我现在重新编写了关系接下来是什么,我如何从外键和ge获取数据不要访问urldisplayed@DonaldDonald您现在尝试执行什么查询?我正在考虑提交,而AssignSubmissions是您的模型,因此您可以获取$Submission=App\Submission::find(1)->AssignSubmissions;$AssignSubmissions=App\AssignSubmissions::find(1)->提交;因此在AssignSubmission
中,我有user\u id
和submission\u id
我想在视图中显示文件的url哪个文件url?如果我在提交中有两个url,我只想要第二个数据,我如何显示它?我假设你是指assignmentSubmission
中的两个url,如果是,你可以在$submission->assignSubmission
作为正常的assignSubmission
,这意味着您可以访问正常的assignSubmission
上的第二个url,如$assignSubmission->url[1]
,您可以对$submission->assignSubmission
进行相同的操作,如$submission->assignSubmission->url[1]
。这完全取决于您的AssignSubmission
模型,与$submission
的关系无关。我有一个问题,为什么有时使用这种方式获取数据会显示错误“试图获取非对象的属性'name'”@JuMa,这是因为对象在“->”之前不是对象,通常为空。例如,$submission->assignSubmission->url
在这种情况下失败可能是由于$submission
或$submission->assignSubmission
为空。