Php 关系不正常

Php 关系不正常,php,laravel,relation,Php,Laravel,Relation,我目前正在学习一门关于拉威尔的在线课程,我被一些关系困扰着。我最近3个小时一直在寻找一个bug,但我找不到它 基本上,我有一个用户填写的表单和一个他加载图片的字段。对于那个张照片,我在数据库中有两个单独的表(照片-包含关于那个张照片和用户的信息-照片id应该放在哪里)。我遵循了课程中的所有步骤,但在数据库中插入图片后,关系无法正常工作。我将在下面提供我所有的代码 用户照片关系: public function photo(){ return $this->belongsTo('Ap

我目前正在学习一门关于拉威尔的在线课程,我被一些关系困扰着。我最近3个小时一直在寻找一个bug,但我找不到它

基本上,我有一个用户填写的表单和一个他加载图片的字段。对于那个张照片,我在数据库中有两个单独的表(照片-包含关于那个张照片和用户的信息-照片id应该放在哪里)。我遵循了课程中的所有步骤,但在数据库中插入图片后,关系无法正常工作。我将在下面提供我所有的代码

用户照片关系:

public function photo(){
    return $this->belongsTo('App\Photo');
}
在数据库中保存表单数据并在控制器中创建图片:

public function store(UsersRequest $request)
{
    $input = $request->all();

    if ($file = $request->file('photo_id')){

        $name = time().$file->getClientOriginalName();
        $file->move('images', $name);
        $photo = Photo::create(['file'=>$name]);
        $input['photo_id'] = $photo->id;
    }

    $input['password'] = bcrypt($request->password);
    User::create($input);

    return redirect('/admin/users');
}
这是图片的“我的表单”输入字段:

<div class="form-group">
    {!! Form::label('photo_id','Photo: ') !!}
    {!! Form::file('photo_id', null , ['class'=>'form-control']) !!}
</div>

{!!Form::label('photo_id','photo:')
{!!Form::file('photo_id',null,['class'=>'Form-control'])
这个代码没有给我任何错误,但是我的关系不能正常工作。Photos表中没有填充任何数据,在my Users表中,photo_id列中填充的是照片名称,而不是应该填充的id


我真的很感激这里的任何帮助。如果我忘了在这里提供任何其他东西,请告诉我

根据您所说,照片模型应包含:

public function user()
{
    return $this->belongsTo(User::class)
}
public function photo()
{
    return $this->hasOne(Photo::class);
    // Or maybe this should be photos() and
    //return $this->hasMany(Photo::class);
} 
用户模型应包含:

public function user()
{
    return $this->belongsTo(User::class)
}
public function photo()
{
    return $this->hasOne(Photo::class);
    // Or maybe this should be photos() and
    //return $this->hasMany(Photo::class);
} 
关系的常见问题是确保id字段正确,例如:photos表有一个user\u id字段


在了解关系的工作方式时,我建议使用“artisan tinker”,这样您就可以简单地将其与代码的其余部分隔离检查。

就像Chung Nguy一样ễn Trần我假设文件上载工作不正常

这里常见的错误是表单不是用
'files'=>true
打开的。 另请参见文档中的:

所以你应该:

echo Form::open(['url' => 'foo/bar', 'files' => true]);

你能分享用户请求吗?我会将photo_id更改为photo,以使一切更加清晰(因为字段应该包含一个文件,而不是一个id)。这是我的UserRequest:
public function rules(){return['name'=>'required'、'email'=>'required'、'password'=>'required'、'role\u id'=>'required'、][is\u active'=>'required'、];}
和照片id实际上应该包含照片的id,上传的照片存储在另一个表-photos中(该表有一个“文件”字段)我只是按照课程说明做,做的一切都和老师做的一样,但由于某种原因,我没有得到相同的结果。当我尝试“return$request->all();”时,我的照片id显示为一个图像名,而不是一个“id”。我将尝试使用tinker再次测试,因为问题实际上就在这里。我打开表单时使用了“file”而不是“id”“档案”,谢谢