Laravel có quan hệ không?
Phương thức Eloquent này kiểm tra xem khóa “myRelation” có tồn tại trong mảng quan hệ của mô hình Eloquent hay không. Nếu nó tồn tại, có nghĩa là các mối quan hệ thực đã được tải, nó trả về true, nếu không, nó trả về false Show
chữ ký chức năng/** * Determine if the given relation is loaded. * * @param string $key * @return bool */ public function relationLoaded($key) { return array_key_exists($key, $this->relations); } Phương pháp này đã mang lại lợi ích cho tôi như thế nàoTóm lại, trong một trong những dự án của tôi, tôi có hai bảng nghệ nhân và sản phẩm trong đó nghệ nhân có Nhiều sản phẩm và sản phẩm thuộc về một nghệ nhân, như bạn có thể thấy bên dưới người mẫu nghệ nhân hasMany(Product::class); } //... } Dòng sản phẩm belongsTo(Artisan::class); } //... } Bây giờ bất cứ khi nào tôi muốn tìm một nghệ nhân với các sản phẩm của anh ấy, tôi làm điều này $artisan = Artisan::with(['products'])->get(); Trong dự án, mô hình Artisan có nhiều mối quan hệ hơn, nhưng để đơn giản, tôi sẽ chỉ giữ mối quan hệ products Sau này, tôi thường thấy mình háo hức chỉ tải những sản phẩm đang hoạt động của nghệ nhân. Tôi phải thực hiện điều đó bằng cách chuyển một mảng mối quan hệ đến phương thức với trong đó khóa mảng là tên mối quan hệ (trong trường hợp của chúng tôi là sản phẩm) và giá trị mảng là một đóng cửa bổ sung thêm các ràng buộc cho truy vấn tải háo hức $artisan = Artisan::with(['products' => function ($query) { $query->where('active', 1); }])->get(); Vì vậy, tôi nghĩ có thể là một ý kiến hay khi tạo mối quan hệ Sản phẩm đang hoạt động trong mô hình Nghệ nhân để làm cho mối quan hệ này đơn giản và rõ ràng hơn. Tôi cũng vậy người mẫu nghệ nhân hasMany(Product::class); } /** * "Active" products that belong to the artisan. * * @return \Illuminate\Database\Eloquent\Relations\HasMany */ public function activeProducts() { return $this->products()->where('active', 1); } //... } Giờ đây, không cần phải chuyển mối quan hệ kết thúc đối với sản phẩm để tìm nạp các sản phẩm đang hoạt động của nghệ nhân, tôi có thể thực hiện điều tương tự chỉ với điều này $artisan = Artisan::with(['activeProducts'])->get(); Cho đến bây giờ mọi thứ dường như diễn ra suôn sẻ, mã của chúng tôi đơn giản và rõ ràng. Vì vậy, quan hệ được tải ở đâu và khi nào có thể giúp ích gì cho chúng tôi Hãy để tôi chia sẻ với bạn trường hợp sử dụng của tôi Ở nhiều vị trí khác nhau của ứng dụng, có một phần mà tôi phải hiển thị một sản phẩm ngẫu nhiên cho một Nghệ nhân $artisan->randomProduct(); Tùy thuộc vào Bộ điều khiển, đôi khi mối quan hệ háo hức được tải là sản phẩm và những lúc khác là mối quan hệ Sản phẩm đang hoạt động. Vì vậy, sự cần thiết phải biết mối quan hệ nào đã được tải lên đã làm tăng Các mối quan hệ Eloquent của Laravel được định nghĩa là các phương thức trên các lớp mô hình Eloquent của bạn. Vì các mối quan hệ cũng đóng vai trò là trình tạo truy vấn mạnh mẽ, nên việc xác định các mối quan hệ dưới dạng phương thức cung cấp khả năng truy vấn và xâu chuỗi phương thức mạnh mẽ. Các mối quan hệ của Laravel có thể hơi khó hiểu. Nếu bạn chưa hiểu đầy đủ về cách các mối quan hệ trong Laravel hoạt động tại thời điểm này. Đừng lo lắng, Trong blog này, tôi đã thu thập một số mẹo và thủ thuật hữu ích về các mối quan hệ của mô hình laravel có thể hỗ trợ bạn nâng cấp quy trình phát triển web Laravel của mình Phương pháp xây dựng truy vấn hùng biện mới // BEFORE: the foreign key is taken from the Post model $post->author_id === $user->id; // BEFORE: An additional request is made to get the User model from the Author relationship $post->author->is($user); // AFTER $post->author()->is($user); 2Laravel 3 xuất xưởng với một phương pháp xây dựng truy vấn mới cho 2 Eloquent. Điều này cho phép bạn xóa tên khóa ngoại BelongsTo khỏi các truy vấn của mình và thay vào đó, sử dụng phương thức quan hệ làm nguồn thông tin xác thực duy nhất
Phương pháp // BEFORE: the foreign key is taken from the Post model $post->author_id === $user->id; // BEFORE: An additional request is made to get the User model from the Author relationship $post->author->is($user); // AFTER $post->author()->is($user); 5 của mối quan hệ một đối một để so sánh các mô hìnhBây giờ chúng ta có thể so sánh giữa các mô hình liên quan mà không cần truy cập thêm cơ sở dữ liệu ________số 8_______Sử dụng hasMany để tạo NhiềuNếu bạn có mối quan hệ 6, bạn có thể sử dụng 7 để lưu nhiều mục nhập "con" từ đối tượng "cha mẹ" của mình, tất cả trong một câu
Đang tải háo hức đa cấpTrong Laravel, bạn có thể Eager Load nhiều cấp trong một câu lệnh, trong ví dụ này, chúng tôi không chỉ tải quan hệ tác giả mà còn quan hệ quốc gia trên mô hình tác giả
Háo hức tải với các cột chính xácBạn có thể thực hiện Laravel Eager Loading và chỉ định các cột chính xác mà bạn muốn nhận từ mối quan hệ
Bạn có thể làm điều đó ngay cả trong các mối quan hệ cấp hai, sâu sắc hơn
Truy vấn bộ lọc bổ sung về mối quan hệNếu bạn muốn tải dữ liệu quan hệ, bạn có thể chỉ định một số giới hạn hoặc đơn đặt hàng trong hàm đóng. Ví dụ: nếu bạn muốn nhận các Quốc gia chỉ có ba thành phố lớn nhất của họ, thì đây là mã
Thay vì thuộc về, hãy sử dụng hasManyĐối với mối quan hệ thuộc về, thay vì chuyển ID của cha mẹ khi tạo bản ghi con, hãy sử dụng mối quan hệ 8 để tạo câu ngắn hơn
Kết hợp hai "whereHas"Trong Eloquent, bạn có thể kết hợp 9và 0 trong một câu
Kiểm tra xem Phương thức quan hệ có tồn tại khôngNếu tên mối quan hệ Eloquent của bạn là động và bạn cần kiểm tra xem mối quan hệ có tên như vậy có tồn tại trên đối tượng hay không, hãy sử dụng hàm PHP 1
Một cách ngắn hơn để viết whereHasPhát hành trong Laravel 2. một cách ngắn hơn để viết 9 với một điều kiện đơn giản bên trong 0Bạn có thể thêm điều kiện cho các mối quan hệ của mình 1Ghi chú Tôi hy vọng rằng bằng cách làm theo các mẹo và thủ thuật này, bạn có thể cải thiện chất lượng và hiệu suất mã của mình cũng như cải thiện hành trình viết mã của mình. Nếu bạn là một doanh nghiệp và muốn tận dụng Laravel để phát triển ứng dụng web dựa trên PHP tiếp theo cho các yêu cầu tùy chỉnh của mình, bạn phải khám phá một nhóm tinh tế có trình độ về khuôn khổ Laravel. Vì vậy, Codebrisk sẵn sàng trợ giúp bạn với các yêu cầu phù hợp của bạn về Phát triển Laravel Có một ý tưởng tuyệt vời? . com hoặc liên hệ với chúng tôi, nhân viên kinh doanh của chúng tôi sẽ liên hệ lại với bạn Những loại quan hệ nào có sẵn trong Laravel eloquent?Eloquent giúp việc quản lý và làm việc với các mối quan hệ này trở nên dễ dàng, đồng thời hỗ trợ nhiều loại mối quan hệ phổ biến. . Một Đối Một một đến nhiều Nhiều nhiều Có Một Thông Qua Có Nhiều Thông Qua Một Đối Một (Đa hình) Một Đến Nhiều (Đa hình) Nhiều Đến Nhiều (Đa hình) Laravel triển khai mối quan hệ một đến nhiều như thế nào?Tạo một mô hình LinkList Tạo Migration cho LinkList Model Cập nhật di chuyển liên kết Cấu hình mối quan hệ Eloquent Model Mối quan hệ nhiều với nhiều trong Laravel là gì?Trong bảng category_product, bạn có thể thấy product_id 1 có nhiều mục với category_id 2 và 3. Đó là cách bạn có thể tạo nhiều mối quan hệ trong Laravel Eloquent. Rõ ràng là bạn có thể sử dụng nghịch đảo của mối quan hệ này để đính kèm một danh mục cho nhiều sản phẩm .
Tính đa hình trong Laravel là gì?Ví dụ: trong một blog, các nhận xét có thể xuất hiện trên một bài đăng hoặc một trang nhưng vẫn giữ nguyên cấu trúc bất kể đó là một bài đăng hay một trang. This kind of behavior is described as polymorphism. In this article, we will go over polymorphic relationships in Laravel, how they work and the various use cases in which they are best used. |