Tôi đang cố gắng tạo một hệ thống theo dõi/theo dõi đơn giản trong laravel, không có gì đặc biệt, chỉ cần nhấp vào nút để theo dõi hoặc hủy theo dõi và hiển thị những người theo dõi hoặc những người đang theo dõi bạn
Rắc rối của tôi là tôi không thể tìm ra cách tạo mối quan hệ giữa các mô hình
Đây là những cuộc di cư
-Di chuyển người dùng
Schema::create['users', function [Blueprint $table] {
$table->increments['id'];
$table->timestamps[];
$table->string['email'];
$table->string['first_name'];
$table->string['last_name'];
$table->string['password'];
$table->string['gender'];
$table->date['dob'];
$table->rememberToken[];
}];
-Người theo dõi di chuyển
Schema::create['followers', function [Blueprint $table] {
$table->increments['id'];
$table->integer['follower_id']->unsigned[];
$table->integer['following_id']->unsigned[];
$table->timestamps[];
}];
}
Và đây là các mẫu
-Mô hình người dùng
class User extends Model implements Authenticatable
{
use \Illuminate\Auth\Authenticatable;
public function posts[]
{
return $this->hasMany['App\Post'];
}
public function followers[]
{
return $this->hasMany['App\Followers'];
}
}
-Và mô hình người theo dõi về cơ bản là trống rỗng, đây là nơi tôi bị mắc kẹt
Tôi đã thử một cái gì đó như thế này
class Followers extends Model
{
public function user[]
{
return $this->belongsTo['App\User'];
}
}
nhưng nó không hoạt động
Ngoài ra, tôi muốn hỏi liệu bạn có thể cho tôi biết cách viết chức năng "theo dõi" và "hiển thị người theo dõi/theo dõi" không. Tôi đã đọc mọi hướng dẫn tôi có thể tìm thấy nhưng vô ích. Tôi dường như không thể hiểu được
Nếu bạn muốn một số yêu cầu theo dõi cần được chấp nhận bởi người dùng đang được theo dõi, chỉ cần ghi đè phương thức NeedToApproveFollowRequests[] trong mô hình sử dụng đặc điểm Có thể theo dõi bằng logic tùy chỉnh của bạn
public function needsToApproveFollowRequests[] { // Your custom logic here return [bool] $this->private; }
tổng hợp
// followings count $user->followings[]->count[]; $user->approvedFollowings[]->count[]; $user->notApprovedFollowings[]->count[]; // with query where $user->followings[]->where['gender', 'female']->count[]; // followers count $user->followers[]->count[]; $user->approvedFollowers[]->count[]; $user->notApprovedFollowers[]->count[];
Danh sách có thuộc tính
php artisan vendor:publish9
php artisan vendor:publish0
Đính kèm trạng thái theo dõi của người dùng vào bộ sưu tập có thể theo dõi
Bạn có thể sử dụng
use Overtrue\LaravelFollow\Traits\Follower; class User extends Authenticatable { use Follower; }0 để đính kèm trạng thái theo dõi người dùng, nó sẽ đặt thuộc tính
use Overtrue\LaravelFollow\Traits\Follower; class User extends Authenticatable { use Follower; }1 cho từng mô hình của
use Overtrue\LaravelFollow\Traits\Follower; class User extends Authenticatable { use Follower; }2
cho mô hình
php artisan vendor:publish1
Cho use Overtrue\LaravelFollow\Traits\Follower;
class User extends Authenticatable
{
use Follower;
}
3
php artisan vendor:publish2
Để phân trang
php artisan vendor:publish3
Thứ tự theo số lượng người theo dõi
Bạn có thể truy vấn người dùng đặt hàng theo số lượng người theo dõi bằng các phương pháp sau
use Overtrue\LaravelFollow\Traits\Follower; class User extends Authenticatable { use Follower; }
4use Overtrue\LaravelFollow\Traits\Follower; class User extends Authenticatable { use Follower; }
5use Overtrue\LaravelFollow\Traits\Follower; class User extends Authenticatable { use Follower; }
6
thí dụ
php artisan vendor:publish4
vấn đề N+1
Để tránh sự cố N+1, bạn có thể sử dụng tải háo hức để giảm thao tác này xuống chỉ còn 2 truy vấn. Khi truy vấn, bạn có thể chỉ định mối quan hệ nào sẽ được tải háo hức bằng phương pháp
use Overtrue\LaravelFollow\Traits\Follower; class User extends Authenticatable { use Follower; }7
php artisan vendor:publish5
Sự kiện
EventDescriptionuse Overtrue\LaravelFollow\Traits\Follower; class User extends Authenticatable { use Follower; }8Được kích hoạt khi mối quan hệ được tạo. ________ 89 Được kích hoạt khi mối quan hệ bị xóa
❤️Tài trợ cho tôi
如果你喜欢我的项目并想支持它,点击这里❤️
Dự án được hỗ trợ bởi JetBrains
Rất cảm ơn Jetbrains đã vui lòng cung cấp giấy phép để tôi làm việc trong dự án này và các dự án mã nguồn mở khác
Đóng góp
Bạn có thể đóng góp theo một trong ba cách
- Gửi báo cáo lỗi bằng cách sử dụng trình theo dõi sự cố
- Trả lời câu hỏi hoặc sửa lỗi trên trình theo dõi vấn đề
- Đóng góp các tính năng mới hoặc cập nhật wiki
Quá trình đóng góp mã không phải là rất chính thức. Bạn chỉ cần đảm bảo rằng bạn tuân theo các nguyên tắc mã hóa PSR-0, PSR-1 và PSR-2. Mọi đóng góp mã mới phải đi kèm với các bài kiểm tra đơn vị nếu có