'int', 'url_to_crawl_id' => 'int', 'view_count' => 'int', 'is_ai_tool' => 'bool', 'qna' => 'object', 'has_emailed' => 'bool', ]; protected $fillable = [ 'category_id', 'url_to_crawl_id', 'screenshot_img', 'is_ai_tool', 'tool_name', 'slug', 'is_app_web_both', 'tagline', 'summary', 'pricing_type', 'keyword_string', 'view_count', 'qna', 'external_url ', 'has_emailed', 'email', ]; protected function screenshotImg(): Attribute { return Attribute::make( get: function ($value = null) { if (! is_empty($value)) { return Storage::disk(config('platform.uploads.ai_tools.screenshot.driver'))->url(config('platform.uploads.ai_tools.screenshot.path').$value); } return null; } ); } public function category() { return $this->belongsTo(Category::class); } public function url_to_crawl() { return $this->belongsTo(UrlToCrawl::class); } public function search_embeddings() { return $this->hasMany(SearchEmbedding::class); } public function keywords() { return $this->hasMany(AiToolKeyword::class); } }