chuckcms/laravel-contacts

在 Laravel 中将联系人附加到 Eloquent 模型的一种简单方法。

v0.1.1 2022-12-14 15:28 UTC

This package is auto-updated.

Last update: 2024-09-13 20:11:49 UTC


README

Latest Version on Packagist Scrutinizer Code Quality StyleCI Total Downloads

在 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 在安特卫普编写。