关系不正常
Relations not working properly
我目前正在学习 Laravel 的在线课程,但我遇到了一些关系问题。我一直在寻找过去 3 个小时的错误,但我无法找到它。
基本上,我有一个用户填写的表单,以及一个用户加载图片的字段。对于那张照片,我在数据库中有两个单独的 table(照片 - 包含有关该照片和用户的信息 - photo_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>
此代码没有给我任何错误,但我的关系无法正常工作。照片 table 没有填入任何数据,在我的用户 table 中,列 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);
}
关系的一个常见问题是确保 ID 字段正确,例如:照片 table 有一个 user_id 字段
在掌握关系的工作原理时,我建议使用 'artisan tinker',这样您就可以简单地将这些与其余代码隔离开来进行检查。
与 Chung Nguyễn Trần 一样,我认为文件上传工作不正常。
这里的常见错误是表单不是用 'files' => true
打开的。
另请参阅文档:https://laravelcollective.com/docs/5.2/html#file-input
所以你应该这样做:
echo Form::open(['url' => 'foo/bar', 'files' => true]);
我目前正在学习 Laravel 的在线课程,但我遇到了一些关系问题。我一直在寻找过去 3 个小时的错误,但我无法找到它。
基本上,我有一个用户填写的表单,以及一个用户加载图片的字段。对于那张照片,我在数据库中有两个单独的 table(照片 - 包含有关该照片和用户的信息 - photo_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>
此代码没有给我任何错误,但我的关系无法正常工作。照片 table 没有填入任何数据,在我的用户 table 中,列 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);
}
关系的一个常见问题是确保 ID 字段正确,例如:照片 table 有一个 user_id 字段
在掌握关系的工作原理时,我建议使用 'artisan tinker',这样您就可以简单地将这些与其余代码隔离开来进行检查。
与 Chung Nguyễn Trần 一样,我认为文件上传工作不正常。
这里的常见错误是表单不是用 'files' => true
打开的。
另请参阅文档:https://laravelcollective.com/docs/5.2/html#file-input
所以你应该这样做:
echo Form::open(['url' => 'foo/bar', 'files' => true]);