• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

laravel livewire relacje problem z zapisem "post_id" gdy chce dodac komentarz do posta

42 Warsaw Coding Academy
0 głosów
450 wizyt
pytanie zadane 20 października 2020 w PHP przez nowyklemens Początkujący (430 p.)

nie umiem poprawnie dodac "post_id" w tabeli "comments". (funkcja "dodaj"). laravel 8 livewire.

   public function dodaj()
    {

        $this->validate(['nowy' => 'required|max:255']);
        $user_id= $this->user_id=Auth::user()->id;
       $post_id = ????????????????????????????????????????????????????


        $createdKom = Comment::create([
            'body' => $this->nowy,
            'user_id' =>$this->user_id,
            'post_id'=>$this->post_id,

        ]);
        $this->nowy = '';
        session()->flash('message', 'Comment added successfully ');
    }
class Post extends Model
{
    use HasFactory;
    protected $fillable =['body', 'user_id', 'image'];
    protected $guarded = [];

    public function user(){
        return $this->belongsTo('App\Models\User', 'user_id');
    }


    public function comments(){
        return $this->hasMany('App\Models\Comment', 'post_id');
    }
    public function getImagePathAttribute()
    {
        return Storage::disk('public')->url($this->image);
    }
}
class Comment extends Model
{
    use HasFactory;
    protected $fillable =['body', 'user_id', 'post_id', 'image' ];
    protected $guarded = [];

    public function user(){
        return $this->belongsTo('App\Models\User', 'user_id');
    }
    public function post(){
        return $this->belongsTo('App\Models\Post', 'post_id');
    }
    public function getImagePathAttribute()
    {
        return Storage::disk('public')->url($this->image);
    }
}
class CreateCommentsTable extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        Schema::create('comments', function (Blueprint $table) {
            $table->id();
            $table->text('body');
            $table->string('image')->nullable();
            $table->unsignedBigInteger('user_id');
            $table->unsignedBigInteger('post_id');
            $table->foreign('user_id')->references('id')->on('users')->onDelete('cascade');
            $table->foreign('post_id')->references('id')->on('posts')->onDelete('cascade');
            $table->timestamps();
        });
    }
class CreatePostsTable extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        Schema::create('posts', function (Blueprint $table) {
            $table->id();
            $table->text('body');
            $table->string('image')->nullable();
            $table->unsignedBigInteger('user_id');
            $table->foreign('user_id')->references('id')->on('users')->onDelete('cascade');
            $table->timestamps();
        });
    }

 

1 odpowiedź

+1 głos
odpowiedź 21 października 2020 przez Arkadiusz Waluk Ekspert (290,090 p.)
Aplikacja sama nie zgadnie jaki to post, musisz to gdzieś przesłać, zapewne w body requesta albo w adresie. Nie robiłem nic w Livewire, ale z tego co widzę można normalnie to zrobić: https://laravel-livewire.com/docs/2.x/actions#action-parameters (w tym przykładzie jest to Todo).

Podobne pytania

0 głosów
1 odpowiedź 221 wizyt
pytanie zadane 5 listopada 2021 w PHP przez Grzegorz Mikina Dyskutant (8,060 p.)
0 głosów
1 odpowiedź 179 wizyt
pytanie zadane 14 stycznia 2021 w PHP przez mi-20 Stary wyjadacz (13,250 p.)
0 głosów
0 odpowiedzi 450 wizyt

93,383 zapytań

142,382 odpowiedzi

322,539 komentarzy

62,744 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

VMware Cloud PRO - przenieś swoją infrastrukturę IT do chmury
...