دورة LARAVEL للمبتدئين الدرس السادس عشر


فهاد الدرس السادس عشر من دورة laravel للمبتدئين غادي نشوفو كيفاش نزيدو التعليقات على les posts ديالنا وغادي نزيدو لعلاقة ما بين post و comment وغادي نشوفوا كيفاش نعرضوا التعليقات ديال كل post.


1- إضافة الجدول الخاص بالتعليقات

غادي تفتح  cmd غادي تدير ل commande :

php artisan make:model Comment -m

فغادي نزيد ل Model معاه ل migration لي غادي تمكني من إضافة la table comments فقاعدة البيانات.

غادي تمشي ل database/migrations غادي تلقى ل migration تزادت من بعد فيها غادي تزيد les champs لي حددناهم وغادي تدير ل commande :

php artisan:migrate 

 الكود ديال ل migration هو :

                                //
<?php

use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;

class CreateCommentsTable extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        Schema::create('comments', function (Blueprint $table) {
            $table->increments('id');
            $table->integer('post_id');
            $table->integer('user_id');
            $table->text('body');
            $table->timestamps();
        });
    }

    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        Schema::dropIfExists('comments');
    }
}
                            

2- إضافة العلاقة ما بين ل post ول comment

فغادي نزيدو العلاقة ما بين ل Post Model ول Comment Model فكيف شفنا table لي زدنا فيها post_id لي هو ل id ديال ل post لي التعليق تزاد عليه فغادي نمشي ل Post.php غادي نزيد fonction comments لي فيها كنقول بلي كل post عندو بزاف ديال التعليقات خاصين به.

الكود لي زدنا ف Post.php هو :

                                //Post.php

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class Post extends Model
{
    //
    public function user(){
        return $this->belongsTo(User::class);
    }
    public function comments(){
        return $this->hasMany(Comment::class);
    }
}
                            

3- إضافة العلاقة ما بين ل user ول comment

فغادي نزيدو العلاقة ما بين ل User Model ول Comment Model فكيف شفنا table لي زدنا فيها user_id لي هو ل id ديال ل المستخدم لي زاد التعليق فغادي نمشي ل Comment.php غادي نزيد fonction user لي فيها كنقول بلي كل تعليق تابع لواحد المستخدم.

الكود لي زدنا ف Comment.php هو :

                                //
<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class Comment extends Model
{
    //
    public function user(){
        return $this->belongsTo(User::class);
    }
}
                            

4- إضافة ل CommentsController

غادي تزيد controller سميه CommentsController بل commande :

php artisan make:controller CommentsController

منبعد فيه غادي نزيد ل fonction store لي فقط كتستقبل القيم لي غادي يجيو من الفورم لي غادي نزيدو من بعد وكنزيدهم فالجدول الخاص بالتعليقات.

الكود ديال CommentsController.php هو :

                                    //
<?php

namespace App\Http\Controllers;
use App\Comment;
use Illuminate\Http\Request;

class CommentsController extends Controller
{
    //
    public function store(Request $request){
        $comment = new Comment();
        $comment->post_id = $request->post_id;
        $comment->user_id = request()->user()->id;
        $comment->body = $request->body;
        $comment->save();
        return redirect()->back();
    }
}
                                

5- إضافة ROUTE ف WEB.PHP

غادي نمشي ل web.php غادي نزيد route ديالي لي كيرسل لقيم ل fonction store لي زدنا ولي سميناه comment.add.

الكود لي زدنا ف web.php هو :

                                    //
Route::post('/comment/create','CommentsController@store')->name('comment.add');