سلام من طبق آموزشها پیش رفتم وقتی با نام کاربری که برای 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);
}
}