MOON
Server: Apache
System: Linux server1.studioinfinity.com.br 2.6.32-954.3.5.lve1.4.90.el6.x86_64 #1 SMP Tue Feb 21 12:26:30 UTC 2023 x86_64
User: artinside (517)
PHP: 7.4.33
Disabled: exec,passthru,shell_exec,system
Upload Files
File: //home/artinside/public_html/raquel/source/Models/Ecommerce/Produto.php
<?php

namespace Source\Models\Ecommerce;

use Source\Core\Model;
use Source\Models\Category;

/**
 * Class Produto
 * @package Source\Models\Ecommerce
 */
class Produto extends Model
{
    /**
     * Post constructor.
     */
    public function __construct()
    {
        parent::__construct("produtos", ["id"], ["nome", "url", "descricao", "tipo"]);
    }

    /**
     * @param string $url
     * @param string $columns
     * @return null|Produto
     */
    public function findByUri(string $url, string $columns = "*"): ?Produto
    {
        $find = $this->find("url = :url AND status = 'produtos'", "url={$url}", $columns);
        return $find->fetch();
    }

    /**
     * @param string $gLink
     * @param string $columns
     * @return null|Produto
     */
    public function findByGlink(string $gLink, string $columns = "*"): ?Produto
    {
        $find = $this->find("gallery_link = :gLink", "gLink={$gLink}", $columns);
        return $find->fetch();
    }


//
//    /**
//     * @return null|Category
//     */
//    public function category(): ?Category
//    {
//        if ($this->category) {
//            return (new Category())->findById($this->category);
//        }
//        return null;
//    }

    /**
     * @return bool
     */
    public function save(): bool
    {
        $checkUri = (new Produto())->find("url = :url AND id != :id", "url={$this->url}&id={$this->id}");

        if ($checkUri->count()) {
            $this->url = "{$this->url}-{$this->lastId()}";
        }

        return parent::save();
    }
}