🎉 سال نو، مهارت نو، مشاوره رایگان نقشه راه برنامه نویسی (آفر ویژه ثبت نام قبل از افزایش قیمت 🔥)
۰ ثانیه
۰ دقیقه
۰ ساعت
۱ Mahdiabedini
نمایش خطا موقع نمایش دادن تیکت هایی که باید ادمین ببینه
جامعه لاراول ایجاد شده در ۱۳ آذر ۱۴۰۰

سلام من طبق آموزش‌ها پیش رفتم وقتی با نام کاربری که برای admin و در جدول admins ساختم وارد میشم و می‌خوام ticket ‌ها را ببینم به من خطا می‌ده و میگه کاربر null هستش در صورتی که من طبق آموزش رفتم جلو و با ورود به سیستم ام هم با موفقیت انجام میشه چرا به من وقتی auth()->user()->tickets را میزنم خطا میده. استاد من کدهای شما را هم نگاه کردم و دقیقا مثل کدهای شما بود برنامه ام . من برنامه ام را با لاراول 8 نوشتم فقط همین کد‌های برنامه ام را اینجا قرار می‌دم .

//adminController

namespace App\\Http\\Controllers;
use App\\Models\\Admin;
use Illuminate\\Foundation\\Auth\\AuthenticatesUsers;
use Illuminate\\Http\\Request;
use Illuminate\\Support\\Facades\\Auth;
use Illuminate\\Support\\Facades\\Hash;
class AdminController extends Controller
{
    use AuthenticatesUsers;
    protected $redirectTo = '/home';
    public function __construct(){
        $this->middleware('guest:web');
        $this->middleware('guest:admin');
    }
    public function showRegistrationForm() {
        return view('admin.register');
    }
    public function showLoginForm() {
        return view('admin.login');
    }
    public function register(Request $request) {
        $this->validateRegister($request);
        $admin = $this->create($request->all());
        $this->guard()->login($admin);
        return redirect($this->redirectTo);
    }
    private function validateRegister($request) {
        return $request->validate([
            'name' => ['required', 'string', 'max:255'],
            'email' => ['required', 'string', 'email', 'max:255', 'unique:users'],
            'password' => ['required', 'string', 'min:8', 'confirmed'],
            'department' => ['required']
        ]);
    }
    private function create(array $data) {
       return Admin::create([
            'name' => $data['name'],
            'email' => $data['email'],
            'password' => Hash::make($data['password']),
            'department' => $data['department']
        ]);
    }
    private function guard() {
        return Auth::guard('admin');
   }
}
//TicketController

namespace App\\Http\\Controllers;
use Illuminate\\Http\\Request;
class TicketController extends Controller{
    public function __contract(){
        $this->middleware('auth:admin,web');
    }
    public function new(){
        return view('tickets.new');
    }
   public function index() {
        dd(auth()->user()->tickets);
        $tickets = auth()->user()->tickets;
        return view('tickets.tickets',compact('tickets'));
    }
    public function create(Request $request){
        $this->validateTicket($request);
        auth()->user()->tickets()->create(
            $request->all(),['file_path'=>$this->uploadFile($request)]
        );
        return redirect()->back()->withSuccess('تیکت شما با موفقیت ثبت شد');
    }
    private function validateTicket($request) {
        return $request->validate([
            'title' => ['required', 'string', 'max:255' ,'min:10'],
            'department' => ['required', 'integer'],
            'priority' => ['required', 'integer'],
            'text' => ['required','string'],
            'file'=>['file','mimeTypes:application/gzip,image/jpeg,video/mp4']
        ]);
    }
    private function uploadFile($request) {
        return $request->hasFile('file')
                ? $request->file->store('public')
                : null;
    }
}
//App/model/admin

namespace App\\Models;
use Illuminate\\Foundation\\Auth\\User as Authenticatable;
use Illuminate\\Notifications\\Notifiable;
class Admin extends Authenticatable{
    use Notifiable;
    protected $guard='admin';
    protected $fillable = [ 'name', 'email', 'password', 'department' ];
    public function tickets() {
        return $this->hasMany(Ticket::class, 'department','department');
    }
}
//app/models/Ticket.php

namespace App\\Models;
use Illuminate\\Database\\Eloquent\\Factories\\HasFactory;
use Illuminate\\Database\\Eloquent\\Model;
class Ticket extends Model{
    use HasFactory;
    protected $fillable = [ "title", "text", "department" ,"file_path", "priority" ];
    protected $attributes = [ 'status' => 0];
    public function user(){
        return $this->belongsTo(User::class);
    }
}
//app/models/users

namespace App\\Models;
use App\\Jobs\\SendEmailJob;
use App\\Mail\\ResetPassword;
use App\\Mail\\VerificationEmail;
use App\\Services\\Auth\\Traits\\HasTwoFactor;
use App\\Services\\Auth\\Traits\\MagicallyAuthenticable;
use App\\Services\\Permission\\Traits\\HasPermissions;
use App\\Services\\Permission\\Traits\\HasRoles;
use Illuminate\\Foundation\\Auth\\User as Authenticatable;
use Illuminate\\Notifications\\Notifiable;
class User extends Authenticatable{
    use Notifiable, MagicallyAuthenticable, HasTwoFactor,HasPermissions,HasRoles;
    protected $guarded = 'web';
    protected $fillable = ['name','email','password','phone_number','provider','provider_id','avatar','email_verified_at',];
    protected $hidden = ['password','remember_token',];
    protected $casts = ['email_verified_at' => 'datetime',];
    public function sendEmailVerificationNotification() {
        SendEmailJob::dispatch($this, new VerificationEmail($this));
    }
    public function sendPasswordResetNotification($token) {
        SendEmailJob::dispatch($this, new ResetPassword($this, $token));
    }
    public function tickets() {
        return $this->hasMany(Ticket::class);
    }
}

guard رو هم مشخص کنید ببینید مشکل حل میشه.

auth('admin')->user()->tickets
بهترین پاسخ
مهرداد سامی ۱۳ آذر ۱۴۰۰، ۱۳:۰۶