Bonjour,
J'ai un problème pour insérer dynamiquement la FK d'un post lors de l'ajout d'un commentaire.
Dans mon PostController.php:
public function postComment($id) {
$post = Post::find($id);
$rules = array(
'commentaire' => 'required'
);
$validation = Validator::make(Input::all(), $rules);
if($validation->fails()) {
return Redirect::to('post/lire/'.Str::slug($post->title).'/'.$post->id)->withErrors($validation)->withInput();
}
else {
$comment = array('content' => Input::get('commentaire'), 'user_id' => Auth::user()->id);
if($post->comments()->insert($comment)) {
Session::flash('comment_success', 'Commentaire ajouté');
return Redirect::back();
}
}
}
Lors de l'ajout d'un commentaire la colonne 'post_id' (ainsi que les colonnes 'created_at' et 'uploaded_at') n'est pas renseigné automatiquement dans ma table comments :
La ligne qui me pose problème est :
$post->comments()->insert($comment)
Voici mon model Post.php:
class Post extends Eloquent {
public function user() {
return $this->belongsTo('user');
}
public function comments() {
return $this->hasMany('comment');
}
}
Quelqu'un peut il m'aider svp ?
Merci d'avance,
++
Résolu en ajout à mon model Comment.php :
protected $guarded = array('id');
Et en remplaçant dans mon controller PostController.php:
$comment = array('content' => Input::get('commentaire'), 'user_id' => Auth::user()->id);
if($post->comments()->insert($comment)) {
Par :
$comment = new Comment(array('content' => Input::get('commentaire'), 'user_id' => Auth::user()->id));
if($post->comments()->save($comment)) {
Il y a pas mal de changements entre laravel 3 et 4 c'est un peu difficile de s'y retrouver dans tout ça...