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

منذ 5 سنوات imadbelasri Laravel
LA

فهاد الدرس الرابع عشر من دورة laravel للمبتدئين غادي نكملوا الدورة ديالنا وغادي نزيدو la relation ما بين ل user و les posts منبعد غادي نشوفوا كيفاش نديرو نعرضوا اسم المستخدم لي زاد كل post.



1- العلاقة hasMany ف LARAVEL

العلاقة hasMany ف laravel كتمكن باش نقول بلي واحد model عندو واحد أو أكثر من model أخر فالمثال ديالنا غادي نمشي ل Model user غادي نزيد fonction posts لي فيها كنقول بلي كل user عندو des posts وكنحددها ب hasMany لي كتاخد اسم ل model لي هنا هو Post.

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

                                                    
                                                        //<?php

namespace App;

use Illuminate\Notifications\Notifiable;
use Illuminate\Foundation\Auth\User as Authenticatable;

class User extends Authenticatable
{
    use Notifiable;

    /**
     * The attributes that are mass assignable.
     *
     * @var array
     */
    protected $fillable = [
        'name', 'email', 'password',
    ];

    /**
     * The attributes that should be hidden for arrays.
     *
     * @var array
     */
    protected $hidden = [
        'password', 'remember_token',
    ];
    public function posts(){
        return $this->hasMany(Post::class);
    }
}
                                                    
                                                

2- عرض اسم المستخدم لي زاد كل post

فباش نعرض اسم المستخدم لي زاد كل post فالطريقة ساهلة كيكفي باش نستعمل la relation لي زدت ف Post.php فكندير :

{{$post->user->name}}

فهنا كنقول عرضلي الإسم ديال لمستخدم لي زاد كل post فكنزيدها فالصفحة الرئيسية كنحصل على هاد النتيجة :




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

                                                        
                                                            //
<!doctype html>
<html lang="{{ app()->getLocale() }}">
    <head>
        <meta charset="utf-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <meta name="viewport" content="width=device-width, initial-scale=1">

        <title>Laravel</title>
        <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/css/bootstrap.min.css" integrity="sha384-MCw98/SFnGE8fJT3GXwEOngsV7Zt27NXFoaoApmYm81iuXoPkFOJwJ8ERdknLPMO" crossorigin="anonymous">
        <!-- Fonts -->
        <link href="https://fonts.googleapis.com/css?family=Raleway:100,600" rel="stylesheet" type="text/css">
    </head>
    <body>
        <div class="container">
            <div class="row mt-4">
                <div class="col-md-6">
                    <h3>Ajouter un article</h3>
                    <hr>
                    {{-- part 4 --}}
                    @if(Session::has('success'))
                        <div class="alert alert-success">{{Session::get('success')}}</div>
                    @endif
                    {{-- part 3 --}}
                    @foreach($errors->all() as $error)
                        <div class="alert alert-danger">{{$error}}</div>
                    @endforeach
                    {{-- part 1 --}}
                    <form action="{{route('post.add')}}" method="post">
                        {{csrf_field()}}
                        <div class="form-group">
                            <input type="text" placeholder="Titre" name="title" class="form-control">
                        </div>
                        <div class="form-group">
                            <textarea placeholder="Description" col="30" rows="5" name="body" class="form-control"></textarea>
                        </div>
                        <div class="form-group">
                            <button class="btn btn-primary" type="submit">Valider</button>
                        </div>
                    </form>
                </div>
                <div class="col-md-6">
                    <h3>Articles</h3>
                    <hr>
                    <table class="table table-hover">
                        <thead>
                            <tr>
                                <th>Auteur</th>
                                <th>Titre</th>
                                <th>Déscrption</th>
                            </tr>
                        </thead>
                        <tbody>
                            @foreach($posts as $post)
                                <tr>
                                    <td>{{$post->user->name}}</td>
                                    <td>{{$post->title}}</td>
                                    <td>{{$post->body}}</td>
                                </tr>
                            @endforeach
                        </tbody>
                    </table>
                </div>
            </div>
        </div>
    </body>
</html>
                                                        
                                                    

3- عرض les posts الخاصين بمستخدم محدد

فباش نعرض les posts الخاصين بمستخدم معين فغادي نخدموا ب relation hasMany لي زدنا.

فأول حاجة خص تكونيكطا باش ميعطيكش erreur منبعد غادي نمشي للصفحة الرئيسية فغادي نغير foreach $posts ل : 

request()->user()->posts

فهنا كنسترجع لمستخدم لي مكونيكطي منبعد كنسترجع les posts ديالو ب relation لي زدنا ف Post.php ولي غادي يعطيني نفس النتيجة لي كانت قبل.

الكود لي غيرنا ف welcome.blade.php هو :

                                                        
                                                            //

<!doctype html>
<html lang="{{ app()->getLocale() }}">
    <head>
        <meta charset="utf-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <meta name="viewport" content="width=device-width, initial-scale=1">

        <title>Laravel</title>
        <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/css/bootstrap.min.css" integrity="sha384-MCw98/SFnGE8fJT3GXwEOngsV7Zt27NXFoaoApmYm81iuXoPkFOJwJ8ERdknLPMO" crossorigin="anonymous">
        <!-- Fonts -->
        <link href="https://fonts.googleapis.com/css?family=Raleway:100,600" rel="stylesheet" type="text/css">
    </head>
    <body>
        <div class="container">
            <div class="row mt-4">
                <div class="col-md-6">
                    <h3>Ajouter un article</h3>
                    <hr>
                    {{-- part 4 --}}
                    @if(Session::has('success'))
                        <div class="alert alert-success">{{Session::get('success')}}</div>
                    @endif
                    {{-- part 3 --}}
                    @foreach($errors->all() as $error)
                        <div class="alert alert-danger">{{$error}}</div>
                    @endforeach
                    {{-- part 1 --}}
                    <form action="{{route('post.add')}}" method="post">
                        {{csrf_field()}}
                        <div class="form-group">
                            <input type="text" placeholder="Titre" name="title" class="form-control">
                        </div>
                        <div class="form-group">
                            <textarea placeholder="Description" col="30" rows="5" name="body" class="form-control"></textarea>
                        </div>
                        <div class="form-group">
                            <button class="btn btn-primary" type="submit">Valider</button>
                        </div>
                    </form>
                </div>
                <div class="col-md-6">
                    <h3>Articles</h3>
                    <hr>
                    <table class="table table-hover">
                        <thead>
                            <tr>
                                <th>Auteur</th>
                                <th>Titre</th>
                                <th>Déscrption</th>
                            </tr>
                        </thead>
                        <tbody>
                            @foreach(request()->user()->posts as $post)
                                <tr>
                                    <td>{{$post->user->name}}</td>
                                    <td>{{$post->title}}</td>
                                    <td>{{$post->body}}</td>
                                </tr>
                            @endforeach
                        </tbody>
                    </table>
                </div>
            </div>
        </div>
    </body>
</html>
                                                        
                                                    

دروس ذات صلة

LA

دورة laravel للمبتدئين الجزء الأول

فهاد الدورة الجديدة ديال المبتدئين غادي نشوفوا واحد ل php framework لي هي رقم واحد حاليا ولي هي lara...


LA

دورة laravel للمبتدئين الدرس الثاني

فهاد الدرس الثاني من دورة laravel للمبتدئين غادي نكملوا الدورة ديالنا فغادي نشوفوا كيفاش نزيدو les f...


LA

دورة laravel للمبتدئين الدرس الثالت

فهاد الدرس الثالت من دورة laravel للمبتدئين غادي نكملوا الدورة ديالنا غادي نشوف...


LA

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

فهاد الدرس الرابع من دورة laravel للمبتدئين غادي نكملو الدورة ديالنا بالتطرق لكيفاش نستعمل ل mo...


LA

دورة laravel للمبتدئين الدرس الخامس

فالدرس السابق من دورة laravel للمبتدئين شفنا كيفاش درنا الإضافة فقاعدة البيانات من بعد شفنا كيفاش اس...


LA

دورة laravel للمبتدئين الدرس السادس

فهاد الدرس السادس من دورة laravel للمبتدئين غادي نشوفوا كيفاش نتعاملو مع les formulaires ف laravel غ...


LA

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

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


LA

دورة laravel للمبتدئين الدرس الثامن

فهاد الدرس الثامن من دورة laravel للمبتدئين غادي نشوفوا كيفاش نتعاملو مع les sessions.فالدرس السابق...


LA

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

فهاد الدرس التاسع من دورة laravel للمبتدئين غادي نكملو الدورة ديالنا غادي نشوفوا كيفاش نديرو ل form...


LA

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

فهاد الدرس العاشر من دورة laravel للمبتدئين غادي نكملوا الدورة ديالنا وندوزو ل authentification...