risetechapps/contact-for-laravel
最新稳定版本:1.1.0
Composer 安装命令:
composer require risetechapps/contact-for-laravel
包简介
README 文档
README
📌 Sobre o Projeto
O Laravel Contact é um package para Laravel que te possibilita criar multiplos contatos no mesmo registro.
🚀 Instalação
1️⃣ Requisitos
Antes de instalar, certifique-se de que seu projeto atenda aos seguintes requisitos:
- PHP >= 8.3
- Laravel >= 12
- Composer instalado
2️⃣ Instalação do Package
Execute o seguinte comando no terminal:
composer require risetechapps/contact-for-laravel
3️⃣ Configure seu Model
use RiseTechApps\Contact\Traits\HasContacts\HasContacts; class Client extends Model { use HasFactory, HasContacts; }
4️⃣ Rodar Migrations
php artisan migrate
📖 Uso
Nota: O trait
HasContactspode ser usado em qualquer model, com ou semSoftDeletes.
Campos do Contato
name- Nome do contatotelephone- Telefone fixocellphone- Celularemail- Emaildepartment- Departamento/Tipo (ex: comercial, suporte)is_primary- Define se é o contato principal (boolean)sort_order- Ordenação personalizada (inteiro)
Métodos Disponíveis no Trait
use RiseTechApps\Contact\Traits\HasContacts\HasContacts; class Client extends Model { use HasFactory, HasContacts; } // Obter contato principal $primaryContact = $client->getPrimaryContact(); // Obter contatos por departamento $comercialContacts = $client->getContactsByType('comercial'); // Verificar se existe email $hasEmail = $client->hasEmail('joao@exemplo.com'); // Verificar contato em campo específico $hasPhone = $client->hasContact('telephone', '11999999999');
Relacionamento
// Todos os contatos ordenados por sort_order $client->contacts; // Apenas o contato principal $client->contacts()->primary()->first(); // Ordenados $client->contacts()->ordered()->get();
Contato Principal (Automático)
O sistema gerencia automaticamente o contato principal:
- Ao criar um contato: Se não existir nenhum contato primário para o model, ele automaticamente será marcado como primário
- Ao definir como primário: Se já existir um contato primário, o anterior perde automaticamente essa marcação
- Ao deletar o primário: Outro contato do mesmo model será promovido a primário automaticamente (respeitando
sort_orderecreated_at)
// Criar primeiro contato - automaticamente vira primário $client->contacts()->create(['name' => 'João', 'email' => 'joao@exemplo.com']); // Criar segundo como primário - o primeiro perde a marcação $client->contacts()->create([ 'name' => 'Maria', 'email' => 'maria@exemplo.com', 'is_primary' => true // João deixa de ser primário ]); // Deletar o primário - outro contato assume automaticamente $client->getPrimaryContact()->delete(); $novoPrimario = $client->fresh()->getPrimaryContact(); // Retorna outro contato
Histórico de Mudanças (Audit Log)
Todos os contatos possuem rastreamento automático de alterações:
// Obter histórico de um contato $history = $contact->histories; // Últimas 10 alterações $latest = $contact->latestHistory(10); // Filtrar por tipo de ação $updates = $contact->historiesForAction('updated'); // Quem criou o contato $creator = $contact->createdBy(); // Quem fez a última alteração $lastEditor = $contact->lastUpdatedBy(); // Verificar se um campo específico mudou foreach ($history as $record) { if ($record->fieldChanged('email')) { $oldEmail = $record->getOldValue('email'); $newEmail = $record->getNewValue('email'); } }
Configurar Campos Auditáveis (Opcional)
Por padrão, todos os campos fillable são auditados. Para personalizar:
class Contact extends Model { protected $auditable = ['name', 'email', 'telephone']; // apenas estes protected $auditGuard = 'web'; // guard alternativo }
🛠 Contribuição
Sinta-se à vontade para contribuir! Basta seguir estes passos:
- Faça um fork do repositório
- Crie uma branch (
feature/nova-funcionalidade) - Faça um commit das suas alterações
- Envie um Pull Request
📜 Licença
Este projeto é distribuído sob a licença MIT. Veja o arquivo LICENSE para mais detalhes.
💡 Desenvolvido por Rise Tech
统计信息
- 总下载量: 245
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 0
- 点击次数: 2
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2025-02-11