caiochami / bundles
非Laravel项目使用的Laravel工具集
v1.9
2020-12-16 01:49 UTC
Requires
- php: ^7.2|^8.0
- nesbot/carbon: ^2.41.5
README
为非Laravel项目提供的类似Laravel的工具集
安装
[composer] composer require caiochami/bundles
用法
Request类收集并验证所有HTTP输入数据。如果验证结束时发现错误,将以json格式显示信息。如果头部没有"Content-Type: application/json",则此行为将改变,它会将错误和附加到$_SESSION变量的请求数据重定向到前一页。
- 实例化Request类。当使用"exists"规则时,需要传递PDO实例。
- 指定规则
- (可选)指定自定义消息
假设我们发送一个包含以下数据的json请求。
[ "name" : "John Doe", "city" : "", "password" : "12345678", "password_confirmation" : "1234568", "id" : null, "patients": [ { "name": "Foo", "age": 2 }, { "name": "Bar", "age": 10 } ] ];
验证将如下所示
require "vendor/autoload.php"; header("Content-Type: application/json;"); use Bundles\Request; $request = new Request; //all empty string variables are converted to null automatically $request->validate([ "name" => ["required","string", "minimum:3", "maximum:100"], "password" => ["required", "string", "confirmed"], "id" => ["nullable", "integer"], "patients" => ["required", "array", "gte:1"], "patients.*.name" => ["required", "string"], "patients.*.age" => ["required", "integer"] ], [ "required" => "The field %s is required" ]);
假设我们有一个用户表和地址表。模型类包含创建、更新、删除和查询条目的所有所需方法。查看以下代码
require "vendor/autoload.php"; use Bundles\Model; use Bundles\DatabaseConnection as Database; class User extends Model { protected static $tableName = "users"; protected static $columns = "id,name,address.city"; protected static $joins = ""; protected static $key = "id"; public function addresses(){ $addresses = DB::use(self::$conn) ->table('addresses') ->select(['id', 'city']) ->where('user_id', $this->id) ->retrieve() ->get(); $this->addresses = $addresses; } } class Address extends Model { protected static $tableName = "addresses"; protected static $columns = "id,city"; protected static $joins = ""; protected static $key = "id"; protected static $fillable = [ "city" ]; public function user(){ $user = DB::use(self::$conn) ->table('users') ->select(['id', 'name']) ->where('id', $this->id) ->retrieve() ->first(); $this->user = $user; } //mutator public function setCityAttribute($value){ return strtolower($value); } } $connection = Database::attempt([ "db_host" => "HOST", "db_name" => "NAME", "db_user" => "USER", "db_psw" => "PASSWORD" ]) //creating a user $user = new User($connection); $user->name = "Foo"; $user->save(); //or $address = Address::create(["city"=> "My homeland"]); //finding and updating the user $user = User::find($connection, 1); //or $address = Address::use($connection)->where("id", 1)->first(); $user->name = "Bar"; $user->save(); //or User::update($connection, 1, [ "name" => "Bar" ]); // deleting a user User::destroy($connection, 1); $user = User::find($connection, 1); $user->delete(); //querying all addresses Address::all($connection); //or more specific User::use($connection) ->where("name", "LIKE", "%bar%") ->whereBetween("birthday", "1993-01-01", "2020-01-01"), ->orWhere("address.city", "California") ->with(['addresses']) ->limit(15) ->retrieve() ->get(); //for debugging you can pass an array just like this User::find($connection, 1, ["debug" => true]); //or User::where("birthday", ">", "1972-11-11") ->orderBy(["name", "DESC"]) ->retrieve(["debug" => true, "show_query" => true ]) ->get();
更多示例,请查看examples/文件夹