Laravel Eloquent에 대해 반드시 알아야 할 7가지 최신 팁
4020 단어 laravelprogrammingphpwebdev
JSON Where 절
라라벨은 JSON 열을 지원하는 데이터베이스에 쿼리할 수 있는 헬퍼를 제공합니다.
Currently, MySQL 5.7+, PostgreSQL, SQL Server 2016, and SQLite 3.9.0 (using the JSON1 extension)
// To query a json column you can use the -> operator
$users = User::query()
->where('preferences->dining->meal', 'salad')
->get();
// You can check if a JSON array contains a set of values
$users = User::query()
->whereJsonContains('options->languages', [
'en', 'de'
])
->get();
// You can also query by the length of a JSON array
$users = User::query()
->whereJsonLength('options->languages', '>', 1)
->get();
if-else 문을 작성하지 않고 조건절을 쿼리에 연결
쿼리 빌더의 "언제"도우미는 🔥입니다.
문을 작성하지 않고 쿼리에 조건절을 연결할 수 있습니다
if-else
.이렇게 하면 쿼리가 매우 명확해집니다.
class RatingSorter extends Sorter
{
function execute(Builder $query)
{
$query
->selectRaw('AVG(product_ratings.rating) AS avg_rating')
->join('product_ratings', 'products.id', '=', 'product_ratings.product_id')
->groupBy('products.id');
->when(
$this->direction === SortDirections::Desc,
fn () => $query->orderByDesc('avg_rating')
fn () => $query->orderBy('avg_rating'),
);
return $query;
}
}
테이블의 모든 열 이름 가져오기
DB::getSchemaBuilder()->getColumnListing('users');
/*
returns [
'id',
'name',
'email',
'email_verified_at',
'password',
'remember_token',
'created_at',
'updated_at',
];
*/
접근자 캐싱
Laravel 9.6부터 연산 집약적인 접근자가 있는 경우
shouldCache
메서드를 사용할 수 있습니다.public function hash(): Attribute
{
return Attribute::make(
get: fn($value) => bcrypt(gzuncompress($value)),
)->shouldCache();
}
새로운 scalar() 메서드
Laravel 9.8.0에서는 쿼리 결과에서 첫 번째 행의 첫 번째 열을 검색할 수 있는
scalar()
메서드가 추가되었습니다.// Before
DB::selectOne("SELECT COUNT(CASE WHEN food = 'burger' THEN 1 END) AS burgers FROM menu_items;")->burgers
// Now
DB::scalar("SELECT COUNT(CASE WHEN food = 'burger' THEN 1 END) FROM menu_items;")
특정 열 선택
모델에서 특정 열을 선택하려면 select 메소드를 사용하거나 배열을 get 메소드에 직접 전달할 수 있습니다!
// Select specified columns from all employees
$employees = Employee::select(['name', 'title', 'email'])->get();
// Select specified columns from all employees
$employees = Employee::get(['name', 'title', 'email']);
두 열의 값 비교
whereColumn
메서드를 사용하여 두 열의 값을 비교할 수 있습니다.return Task::whereColumn('created_at', 'updated_at')->get();
// pass a comparison operator
return Task::whereColumn('created_at', '>', 'updated_at')->get();
Eloquent는 위에서 설명한 뛰어난 기능을 많이 가지고 있습니다. 도움이 되기를 바라며 Laravel 프로젝트에서 구현하시기 바랍니다.
Twitter에서 팔로우:
Reference
이 문제에 관하여(Laravel Eloquent에 대해 반드시 알아야 할 7가지 최신 팁), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/sumyya_khan/7-latest-tipsabout-laravel-eloquent-that-you-must-need-to-know-4gi4텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)