datalogix/laravel-builder-macros

一组实用的 Laravel 构建器宏。

v3.1.0 2024-04-26 13:32 UTC

This package is auto-updated.

Last update: 2024-08-26 14:15:37 UTC


README

Latest Stable Version Total Downloads tests StyleCI codecov License

一组实用的 Laravel 构建器宏。

安装

您可以通过 composer 安装此包

composer require datalogix/laravel-builder-macros

该包将自动注册自身。

addSubSelect

添加一个选择子查询。

// Params: $column, $query
$query->addSubSelect('primary_address_id', 
    Address::select('id')
        ->where('user_id', $user->id)
        ->primary()
);

// It adds primary_address_id to the result set

defaultSelectAll

它选择查询中的所有列。对于具有连接和附加选择的查询非常有用。

$query->defaultSelectAll()
    ->join('contacts', 'users.id', '=', 'contacts.user_id')
    ->addSelect('contacts.name as contact_name');

filter

在模型中进行筛选。

$query->filter(['name' => 'john'])->get();

// Returns all results where name includes `john`

您还可以提供要筛选的列数组

$query->filter(['name' => 'john', 'contact.email' => '@'])->get();

// Returns all results where name includes `john` or contact.email includes `@`

您可以使用 $request->all()

$query->filter($request->all())->get();

joinRelation

一种查询方式来连接关系。

// Params: $relationName, $operator
$query->joinRelation('contact');

leftJoinRelation

一种查询方式来左连接关系。

// Params: $relationName, $operator
$query->leftJoinRelation('contact');

map

一个直接方法来检索结果并将其映射。

$userIds = $query->where('user_id', 10)->map(function ($user) {
    return $user->id;
});

// Returns a collection

whereLike

使用 LIKE 运算符在模型中进行搜索。

$query->whereLike('title', 'john')->get();

// Returns all results where title includes `john`
$query->whereLike('title', 'john', false)->get();

// Returns all results where title ends with `john`
$query->whereLike('title', 'john', true, false)->get();

// Returns all results where title starts with `john`

您还可以提供要搜索的列数组

$query->whereLike(['title', 'contact.name'], 'john')->get();

// Returns all results where title or contact.name includes `john`