۱ محمد مهدی عابدینی
نمایش خطا موقع نمایش دادن تیکت هایی که باید ادمین ببینه
جامعه لاراول ایجاد شده در ۱۳ آذر ۱۴۰۰

سلام من طبق آموزش‌ها پیش رفتم وقتی با نام کاربری که برای 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
بهترین پاسخ
مهرداد سامی ۱۳ آذر ۱۴۰۰، ۱۳:۰۶