Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Laravel从外键获取数据_Php_Laravel_Eloquent_Foreign Keys - Fatal编程技术网

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
为空。