I have a resource Controller with this index
method like this:
public function index() { $args = []; $args = array_merge($args, $this->data_creator(35, 12, 'book')); $args = array_merge($args, $this->data_creator(37, 12, 'kit')); $args = array_merge($args, $this->data_creator(38, 12, 'game')); $args['menu_links'] = [ 'books' => route('shopping-products.category', Category::find(25)->slug), 'videos' => route('shopping-products.category', Category::find(24)->slug), 'kits' => route('shopping-products.category', Category::find(23)->slug), 'games' => route('shopping-products.category', Category::find(22)->slug), ]; return view('frontend.shop.products.index', $args); }
But it returns this error:
Trying to get property ‘slug’ of non-object
And when I dd(Category::find(25), Category::find(24), Category::find(23), Category::find(22));
I get NULL results.
Meaning that it can not find data with specified ids.
However there are 25 records stored at the categories
table:
So what is going wrong here?
UPDATE #1:
Category.php
Model:
class Category extends Model { use Sluggable, SoftDeletes; protected $table = 'categories'; protected $primaryKey = 'cat_id'; protected $guarded = []; /** * Return the sluggable configuration array for this model. * * @return array */ public function sluggable() { return [ 'slug' => [ 'source' => 'cat_name' ] ]; } public function path() { return "/products/categories/$this->slug"; } public function children() { return $this->hasMany(Category::class, 'cat_parent_id', 'cat_id'); } public function parents() { return $this->hasMany(Category::class, 'cat_id', 'cat_parent_id'); } public function products() { return $this->belongsToMany(Product::class, 'category_products', 'ctp_cat_id', 'ctp_prd_id'); } public function news() { return $this->belongsToMany(News::class, 'category_news', 'ctn_cat_id', 'ctn_nws_id'); } public function galleries() { return $this->belongsToMany(Gallery::class, 'category_galleries', 'ctg_cat_id', 'ctg_gly_id'); } public function uploaded() { return $this->hasMany(UploadedFile::class, 'upf_object_id', 'cat_id')->where('upf_object_type_id', '=', '107'); } public function articles() { return $this->belongsToMany(Article::class, 'article_category', 'act_cat_id', 'act_art_id'); } public function olympiadExam() { return $this->belongsToMany(OlympiadExam::class, 'olympiads_exams_categories', 'oec_ole_id', 'oec_cat_id'); } public function olympiadExamQuestion() { return $this->belongsToMany(OlympiadExamQuestion::class, 'olympiads_exams_questions_categories', 'oes_cat_id', 'oes_oeq_id')->orderBy('oeq_number', 'asc'); } public function attr_attributes() { return $this->hasMany(CategoryAttribute::class, 'category_id', 'cat_id'); } // public function attr_product() { return $this->hasMany(Product::class, 'prd_cat_att_id', 'cat_id'); } // public function couponRelation() { return $this->hasMany(couponRelation::class, 'object_id', 'cat_id')->where('object_type', 'product_category'); } public function magazines() { return $this->belongsToMany(Magazine::class, 'category_magazine', 'category_id', 'magazine_id'); } }
UPDATE #2:
Result of dd(Category::where('cat_id', 25), Category::where('cat_id', 24), Category::where('cat_id', 23), Category::where('cat_id', 22));
:
UPDATE #3:
Result of dd(Category::where('cat_id', 25)->get(), Category::where('cat_id', 24)->get(), Category::where('cat_id', 23)->get(), Category::where('cat_id', 22)->get());
Advertisement
Answer
If you use SoftDeletes
trait then laravel just update deleted_at
column. The column isn’t actually deleted from database, it just marked as delete.
To find columns which is softly deleted, use Model::withTrashed()->find()
.