sucohi / eloquent-array

一个Laravel包,用于处理可以通过where子句搜索的数组值。

6.0.0 2017-01-31 08:39 UTC

README

一个Laravel包,用于处理可以通过where子句搜索的数组值。
此包仅适用于Laravel 5.3及以上版本。

安装

执行以下命令。

composer require sukohi/eloquent-array:6.*

然后在config/app.php中设置EloquentArrayServiceProvider。

Sukohi\EloquentArray\EloquentArrayServiceProvider::class, 

准备

执行以下命令以发布和迁移迁移。

php artisan vendor:publish --provider="Sukohi\EloquentArray\EloquentArrayServiceProvider"
php artisan migrate

然后在模型中设置EloquentArrayTrait,如下所示。

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;
use Sukohi\EloquentArray\EloquentArrayTrait;

class Item extends Model
{
    use EloquentArrayTrait;
}

用法

设置

$item = \App\Item::find(1);
$item->setArray('locales', [
    'en' => 'English',
    'es' => 'Spanish',
    'ja' => 'Japanese'
]);
$item->saveArray();

取消设置

$item->unsetArray('locales'); // Remove `locales`
$item->saveArray();

// Or

$item->unsetArray('locales', 'en'); // Remove `en`
$item->saveArray();

删除

将删除与项目相关联的特定数组值。

\App\Item::find(1)->deleteArray('locales');

清除

删除与项目相关联的所有数组值。

\App\Item::find(1)->clearArray();

检索

带键

$item = \App\Item::find(1);
$array = $item->getArray('locales');

/* 

    Array
    (
        [en] => English
        [es] => Spanish
        [ja] => Japanese
    )

*/

不带键

$array = $item->getArray('locales', false);

/* 

    Array
    (
        [0] => English
        [1] => Spanish
        [2] => Japanese
    )

*/

所有值

$array = $item->getAllArray();

特定值

echo $item->getArrayValue('locales', 'en'); // English

// with Default Value

echo $item->getArrayValue('locales', 'en', 'Default-Value');

Where子句

您可以使用whereArray()方法过滤数据,如下所示。

$items = \App\Item::whereArray('locales', 'en')->get();

// or

$items = \App\Item::where('id', 1)
    ->orWhereArray('locales', 'en')
    ->get();

Order By子句

您可以使用数组项名称作为ORDER BY,如下所示。

$items = \App\Item::orderByArray('names', 'en')->get();         // asc
$items = \App\Item::orderByArray('names', 'en', 'asc')->get();

// or

$items = \App\Item::orderByArray('names', 'en', 'desc')->get();

模型

[设置]

$item->setModelArray('App\User', 1);   // Model ID
$item->saveArray();

[设置数组]

$item->setAllModelArray([
    'App\User' => [1, 2, 3, 4, 5]   // Model IDs
]);
$item->saveArray();

[取消设置]

$item->unsetModelArray([
    'App\User' => [2, 3]   // Model IDs
]);
$item->saveArray();

[清除]

$item->clearModelArray('App\User');
$item->saveArray();

// or

$item->clearModelArray([
    'App\User',
    'App\Item'
]);
$item->saveArray();

[检索]

$users = $item->getModelArray('App\User');

许可证

此包根据MIT许可证授权。
版权所有2016 Sukohi Kuhoh