由于外键字段,我得到错误。我有两个模特(经纪人、邮政)。我无法让用户的主键保存为posts表中的外键。我可以手动插入数据,它与父表链接,但是当用户从视图中的表单插入时,它给我的错误有任何帮助吗?
<代理/strong>
namespace AppModels;
use IlluminateDatabaseEloquentFactoriesHasFactory;
use IlluminateDatabaseEloquentModel;
class Agent extends Model
{
use HasFactory;
public function posts(){
return $this->hasMany(Post::class);
}
}
文章
namespace AppModels;
use IlluminateDatabaseEloquentFactoriesHasFactory;
use IlluminateDatabaseEloquentModel;
class Post extends Model
{
use HasFactory;
public function user(){
return $this->belongsTo(Agent::class);
}
}
这是我在控制器中保存数据的方法
public function savepost(Request $request)
{
$post = new Post;
$post->title = $request->title;
$post->description = $request->description;
$post->type = $request->type;
$saved = $post->save();
if ($saved) {
return back()->with('success', 'New post has been added successfuly');
} else {
return back()->with('fail', 'Something went wrong , try again later');
}
}
在我看来,Post
模型应该有agent_id
,当创建新的Post
时,需要agent_id
与现有的user->id
。因此,似乎在新的Post
对象中添加了agent_id
。
...
use Auth;
...
public function savepost(Request $request){
$post = new Post ;
$post->title = $request->title ;
$post->description = $request->description ;
$post->type = $request->type;
$post->agent_id = Auth::user()->id;
$saved = $post->save();
if($saved){
return back()->with('success','New post has been added successfuly');
}else{
return back()->with('fail' , 'Something went wrong , try again later');
}
}