chuckcms / laravel-contacts
在 Laravel 中将联系人附加到 Eloquent 模型的一种简单方法。
v0.1.1
2022-12-14 15:28 UTC
Requires
- php: ^7.2.5|^8.0
- chuckcms/laravel-addresses: ^0.1
- illuminate/auth: ^6.0|^7.0|^8.0|^9.0
- illuminate/container: ^6.0|^7.0|^8.0|^9.0
- illuminate/contracts: ^6.0|^7.0|^8.0|^9.0
- illuminate/database: ^6.0|^7.0|^8.0|^9.0
README
在 Laravel 中将联系人附加到 Eloquent 模型的一种简单方法。受到以下包的启发:
安装
通过以下命令安装包:
composer require chuckcms/laravel-contacts
发布配置和迁移
php artisan vendor:publish --provider="Chuckcms\Contacts\ContactsServiceProvider"
此命令将发布一个 config/contacts.php 文件和一个迁移文件。
您可以通过更改这两个文件来修改默认字段及其规则。
发布后,您可以运行迁移:
php artisan migrate
用法
您可以在任何模型上使用 HasContacts 特性。
<?php namespace App\Models; use Chuckcms\Contacts\Traits\HasContacts; use Illuminate\Database\Eloquent\Model; class Company extends Model { use HasContacts; // ... }
完成此操作后,您可以使用以下方法。
创建一个新的联系人与模型关联
$company = Company::first(); $company->addContact([ 'first_name' => 'John', // required 'last_name' => 'Doe', // defaults to: null 'mobile' => '+32.470123456', // defaults to: null 'email' => 'john.doe@email.com', // defaults to: null 'is_public' => true, // defaults to: false 'is_primary' => true, // defaults to: false ]);
将现有联系人附加到模型
use Chuckcms\Contacts\Models\Contact; $contact = Contact::first(); $company = Company::first(); $company->assignContact($contact);
更新现有联系人
$company = Company::first(); $contact = $company->getPrimaryContact(); $company->updateContact($contact, ['middle_name' => 'In The Middle']);
从模型中删除联系人
$company = Company::first(); $contact = $post->contacts()->first(); $company->removeContact($contact);
从模型中删除所有联系人并替换为给定的联系人(同步)
use Chuckcms\Contacts\Models\Contact; $contacts = Contact::isPublic(); $company = Company::first(); $company->syncContacts($contacts); // OR $contacts = Contact::isPrimary()->pluck('id')->toArray(); $company->syncContacts($contacts); // OR $contact = Contact::isPrimary()->first(); $company->syncContacts($contact->id);
从任何与其关联的模型中删除联系人
$company = Company::first(); $contact = $company->contacts()->first(); $company->deleteContact($contact);
确定模型是否有任何联系人
$company = Company::first(); if ($company->hasContacts()) { //do something }
确定模型是否有(一个)给定的联系人。
use Chuckcms\Contacts\Models\Contact; $company = Company::find(); $contact = Contact::first(); if ($company->hasContact($contact)) { //do something } //OR if ($company->hasContact($contact->id)) { //do something } //OR $contacts = Contact::where('first_name', 'John')->get(); if ($company->hasContact($contacts)) { //do something } //OR $contacts = Contact::where('last_name', 'Doe')->pluck('id')->toArray(); if ($company->hasContact($contacts)) { //do something }
当给定的联系人之一属于模型时,将返回 true。
获取器
您可以使用以下方法检索联系人和某些属性。
获取模型的公开联系人。
$company = Company::first(); $publicContact = $company->getPublicContact();
获取模型的默认联系人。
$company = Company::first(); $primaryContact = $company->getPrimaryContact();
获取模型中所有联系人的名字。
$company = Company::first(); $first_names = $company->getContactFirstNames();
许可证
在 MIT 许可证 下授权。
作者
由 Karel Brijs 在安特卫普编写。