Download the PHP package laravel-ready/hasin without Composer
On this page you can find all versions of the php package laravel-ready/hasin. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Download laravel-ready/hasin
More information about laravel-ready/hasin
Files in laravel-ready/hasin
Package hasin
Short Description Laravel framework relation has in implement
License MIT
Informations about the package hasin
English | 中文
The hasin
is composer package based on where in
syntax to query the relationship of laravel ORM
, which can replace has
based on where exists
syntax in some business scenarios to obtain higher performance.
Installation
Laravel Version | Install command |
---|---|
Laravel 11 | |
Laravel 10 | |
Laravel 9 | |
Laravel 5.5 ~ 8 |
Introductions
The relationship of laravel ORM
is very powerful, and the query has
based on the relationship also provides us with many flexible calling methods. However, in some cases, has
is implemented with where exists syntax.
For example:
select * from users where exists (select * from posts where users.id = posts.user_id)
'exists' is a loop to the external table, and then queries the internal table (subQuery) every time. Because the index used for the query of the internal table (the internal table is efficient, so it can be used as a large table), and how much of the external table needs to be traversed, it is inevitable (try to use a small table), so the use of exists for the large internal table can speed up the efficiency.
However, when the User has a large amount of data, there will be performance problems, so the where in syntax will greatly improve the performance.
select * from users where users.id in (select posts.user_id from posts)
'in' is to hash connect the appearance and inner table, first query the inner table, then match the result of the inner table with the appearance, and use the index for the outer table (the appearance is efficient, and large tables can be used). Most of the inner tables need to be queried, which is inevitable. Therefore, using 'in' with large appearance can speed up the efficiency.
Therefore, the use of has(hasMorph)
or hasIn(hasMorphIn)
in code should be determined by data size
Usage example
hasIn(hasMorphIn)
supports all Relations
in laravel ORM
. The call mode and internal implementation are completely consistent with has(hasMorph)
of the framework.
hasIn
whereHasIn
hasMorphIn
Nested Relation
Testing
Tips: before testing, you need to configure your database connection in the
phpunit.xml.dist
.
License
MIT