69 lines
1.7 KiB
PHP
69 lines
1.7 KiB
PHP
<?php
|
|
|
|
namespace App\Models\Crm;
|
|
|
|
use App\Models\User;
|
|
use App\Traits\BelongsToStore;
|
|
use Illuminate\Database\Eloquent\Relations\BelongsTo;
|
|
use Illuminate\Database\Eloquent\Relations\HasMany;
|
|
use Illuminate\Database\Eloquent\SoftDeletes;
|
|
use Illuminate\Foundation\Auth\User as Authenticatable;
|
|
use Laravel\Sanctum\HasApiTokens;
|
|
|
|
class Customer extends Authenticatable
|
|
{
|
|
use BelongsToStore, SoftDeletes, HasApiTokens;
|
|
|
|
protected $fillable = [
|
|
'store_id', 'lead_id', 'name', 'phone', 'password', 'open_id',
|
|
'id_card', 'wechat', 'birthday', 'expected_date', 'actual_date',
|
|
'baby_count', 'tags', 'status', 'owner_id', 'remark', 'last_login_at',
|
|
];
|
|
|
|
protected $hidden = ['password'];
|
|
|
|
protected function casts(): array
|
|
{
|
|
return [
|
|
'birthday' => 'date',
|
|
'expected_date' => 'date',
|
|
'actual_date' => 'date',
|
|
'baby_count' => 'integer',
|
|
'tags' => 'array',
|
|
'status' => 'integer',
|
|
'last_login_at' => 'datetime',
|
|
'password' => 'hashed',
|
|
];
|
|
}
|
|
|
|
public function lead(): BelongsTo
|
|
{
|
|
return $this->belongsTo(Lead::class);
|
|
}
|
|
|
|
public function owner(): BelongsTo
|
|
{
|
|
return $this->belongsTo(User::class, 'owner_id');
|
|
}
|
|
|
|
public function families(): HasMany
|
|
{
|
|
return $this->hasMany(CustomerFamily::class);
|
|
}
|
|
|
|
public function contracts(): HasMany
|
|
{
|
|
return $this->hasMany(Contract::class);
|
|
}
|
|
|
|
public function questionnaireAnswers(): HasMany
|
|
{
|
|
return $this->hasMany(QuestionnaireAnswer::class);
|
|
}
|
|
|
|
public function complaints(): HasMany
|
|
{
|
|
return $this->hasMany(Complaint::class);
|
|
}
|
|
}
|