You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and dots ('.'), can be up to 35 characters long. Letters must be lowercase.
72 lines
1.6 KiB
72 lines
1.6 KiB
<?php |
|
|
|
namespace App\Models; |
|
|
|
// use Illuminate\Contracts\Auth\MustVerifyEmail; |
|
|
|
use Illuminate\Contracts\Auth\MustVerifyEmail; |
|
use Illuminate\Database\Eloquent\Factories\HasFactory; |
|
use Illuminate\Database\Eloquent\Relations\HasMany; |
|
use Illuminate\Foundation\Auth\User as Authenticatable; |
|
use Illuminate\Notifications\Notifiable; |
|
use Laravel\Sanctum\HasApiTokens; |
|
|
|
class User extends Authenticatable implements MustVerifyEmail |
|
{ |
|
use HasApiTokens, HasFactory, Notifiable; |
|
|
|
/** |
|
* The attributes that are mass assignable. |
|
* |
|
* @var array<int, string> |
|
*/ |
|
protected $fillable = [ |
|
'username', |
|
'name', |
|
'description', |
|
'image', |
|
'email', |
|
'password', |
|
'email_verified_at' |
|
]; |
|
|
|
/** |
|
* The attributes that should be hidden for serialization. |
|
* |
|
* @var array<int, string> |
|
*/ |
|
protected $hidden = [ |
|
'password', |
|
'remember_token', |
|
]; |
|
|
|
/** |
|
* The attributes that should be cast. |
|
* |
|
* @var array<string, string> |
|
*/ |
|
protected $casts = [ |
|
'email_verified_at' => 'datetime', |
|
'password' => 'hashed', |
|
]; |
|
|
|
public function blogs(): HasMany |
|
{ |
|
return $this->hasMany(Blog::class); |
|
} |
|
|
|
public function likes() |
|
{ |
|
return $this->belongsToMany(Blog::class, 'likes'); |
|
} |
|
|
|
public function follows() |
|
{ |
|
return $this->belongsToMany(User::class, 'follows', 'follower_id', 'followed_id'); |
|
} |
|
|
|
public function followed() |
|
{ |
|
return $this->belongsToMany(User::class, 'follows', 'followed_id', 'follower_id'); |
|
} |
|
}
|
|
|