webdev / laravel-loader
Laravel 加载器
1.0.0
2017-04-14 12:01 UTC
Requires
- php: >=5.6.4
This package is not auto-updated.
Last update: 2024-09-20 19:44:25 UTC
README
许可证
Laravel loader 是开源软件,遵循 MIT 许可证
文档
要开始使用 Loader,请使用 Composer 将包添加到项目的依赖项中
composer require webdev/laravel-loader
配置
<?php namespace App\Models; use WebDev\Loader\LoaderMacro; use Illuminate\Database\Eloquent\Model; abstract class BaseModel extends Model { use LoaderMacro; }
基本用法
$product = Product::findOrFail($id); return $product->loader( new ProductTranslate(new Language()), new ProductFeature(new Language()), 'categories' );
产品 -> 翻译
class ProductTranslate extends Loader { protected $name = 'translate'; // Translate public function init() { return ProductTranslate::where('product_id', $this->getModel()->id) ->where('language_id' => auth()->user()->language_id) ->firts() ->toArray(); } }
产品 -> 产品特性
class ProductFeature extends Loader { protected $name = 'features'; // Features public function init() { return ProductFeature::where('product_id', $this->getModel()->id)->get()->toArray(); } }
产品 -> 翻译 -> 语言 && 产品 -> 产品特性 -> 语言
class Language extends Loader { protected $name = 'language'; // Feature public function init() { return Language::findOrFail($this->getPrevious()->language_id)->toArray(); } }
结果
array:2 [ "translate" => array:5 [ "id" => 4 "name" => "Product name" "description" => "Description" "language_id" => 40 "language" => array:6 [ "id" => 40 "code" => "en" "flag" => null "name" => "English" "native_name" => "English" "is_active" => 1 ] ] "features" => array:2 [ 0 => array:2 [ "id" => 23 "name" => "Feature1" "feature_id" => 14 "language_id" => 40 "language" => array:6 [ "id" => 40 "code" => "en" "flag" => null "name" => "English" "native_name" => "English" "is_active" => 1 ] ] 1 => array:5 [ "id" => 24 "name" => "TH" "feature_id" => 14 "language_id" => 156 "language" => array:6 [ "id" => 156 "code" => "th" "flag" => null "name" => "Thai" "native_name" => "ไทย" "is_active" => 1 ] ] ], "categories" => ... ]