Quería agregar un comentario a cada publicación que hago, pero sigo recibiendo errores.
Controlador de comentarios:
public function store(Request $request) { $comments = new Comment; $comments->body =$request->get('comment_body'); $comments->user()->associate($request->user()); $blogs = Comment::find(1); $blogs->comments()->save($comments); return back(); }Modelo de comentario:
namespace App\Models; use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Model; class Comment extends Model { use HasFactory; protected $guarded =[]; public function blog() { return $this->belongsTo(Blog::class); } public function user() { return $this->belongsTo(User::class); } }Modelo de blog:
namespace App\Models; use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Model; class Blog extends Model { use HasFactory; protected $fillable = ['user_id' , 'blog_category_id' , 'title' , 'description']; public function user() { return $this->belongsTo(user::class); } public function blogcategory() { return $this->hasOne(BlogCategory::class)->withDefault(function($user , $post){ $user->name = "Author"; }); } public function comments() { return $this->hasMany(Comment::class); } }Está utilizando el modelo incorrecto; el modelo Blog tiene la relación de comments , no el modelo Comentario:
$blog = Blog::find(...); $blog->comments()->save(...);Actualizar:
Parece que desea utilizar una relación polimórfica que parecería basada en la estructura de su tabla de comments , ya que tiene los campos commentable_id y commentable_type . Si revisa la documentación para la relación polimórfica de uno a muchos, esto es lo mismo que el ejemplo en la documentación:
Modelo de blog:
public function comments() { return $this->morphMany(Comment::class, 'commentable'); }Modelo de comentario:
public function commentable() { return $this->morphTo(); }Laravel 8.x Docs - Eloquent - Relaciones - Relaciones polimórficas - Uno a muchos
Habiendo dicho eso, su modelo de comentario no parece que quisiera usar una relación polimórfica ya que específicamente tenía un método de relación de blog . Si no tiene más de 1 entidad que necesita estar relacionada con el comentario, no estaría usando una relación polimórfica.