???? ??? ???? ??? ??? ?? ????? ???? ? ??? ????? ???? ???? ???, ?? ????? ??? ?? ????? ???? ???? ???? ?? ? ??? ?? ????. ? ???? Laravel ?????? ???? ??? ?? ?? ???? ???? ??? ???? ???? ?? ??? ?????.
1. ???? ??
??? ???? ?? ?? ?? ??? ???? ??? ??? ?? ?? ???? ??? ???? ???. ??? ?? ?? ????? ????? ?? ??? ????? ???.
1. ??? ?? ??
??? ??, ???, ?? ?? ?? ?
2. ?? ?? ??
???? ???, ??, ?? ? ?? ??? ??? ? ????.
3. ?? ?? ??
???? ???? ??? ???? ?? ??? ? ? ???, ???? ??? ???? ??? ? ????.
4. ?? ?? ??
???? ?? ??? ???? ?? ?? ??? ??? ? ????.
5. ?? ??
? ??? ?? ??? ???? ???? ???? ?? ?? ??? ??? ? ????.
2. ?? ??
?? ??? ???? ?? ?? Composer? ??? ? ????? ?? ??? ???? ???.
composer create-project --prefer-dist laravel/laravel pin-tuan
? ??? ???? "pin-tuan"??? Laravel ????? ?????.
???? ??????? ???? ???? ?? ????? ?? ".env" ??? ??? ? ?????? ?? ??? ??? ??? ???.
DB_CONNECTION=mysql DB_HOST=127.0.0.1 DB_PORT=3306 DB_DATABASE=pin-tuan DB_USERNAME=root DB_PASSWORD=root
? ??? ??? ? ???? ?? ??? ??? ? ????.
3. ???? ?? ??
1. ??? ?? ??
(1) ??? ??
?? ??? ??? ?? ??? ???? ???.
Route::get('/register', 'AuthRegisterController@showRegistrationForm')->name('register'); Route::post('/register', 'AuthRegisterController@register');
???? Laravel ?? ??? ?? ???? ?????. ??? ?? ??. ???? ????? showRegistrationForm() ? Register() ???? ????? ???. ???? ??? ??? ????.
class RegisterController extends Controller { use RegistersUsers; protected $redirectTo = '/dashboard'; public function __construct() { $this->middleware('guest'); } public function showRegistrationForm() { return view('auth.register'); } protected function register(Request $request) { $this->validator($request->all())->validate(); event(new Registered($user = $this->create($request->all()))); $this->guard()->login($user); return redirect($this->redirectPath()); } }
(2) User login
??? ??? ??? ??? ?????:
Route::get('/login', 'AuthLoginController@showLoginForm')->name('login'); Route::post('/login', 'AuthLoginController@login'); Route::post('/logout', 'AuthLoginController@logout')->name('logout');
????? Laravel ?? ??? ?? ???? ???? ??? ??? ??? ?????. ???? ????? showLoginForm(), login() ? logout() ???? ????? ???. ???? ??? ??? ????.
class LoginController extends Controller { use AuthenticatesUsers; protected $redirectTo = '/dashboard'; public function __construct() { $this->middleware('guest')->except('logout'); } public function showLoginForm() { return view('auth.login'); } protected function authenticated(Request $request, $user) { if (!$user->is_activated) { $this->guard()->logout(); return redirect('/login')->withError('請先激活您的賬號'); } } public function logout(Request $request) { $this->guard()->logout(); $request->session()->invalidate(); return redirect('/login'); } }
(3) ???? ??
???? ???? update() ???? ???? ???? ???? ??? ??? ? ????. ???? ??? ??? ????.
public function update(Request $request) { $user = Auth::user(); $this->validate($request, [ 'name' => 'required|string|max:255|unique:users,name,' . $user->id, 'email' => 'required|string|email|max:255|unique:users,email,' . $user->id, 'password' => 'nullable|string|min:6|confirmed', ]); $user->name = $request->input('name'); $user->email = $request->input('email'); if ($request->has('password')) { $user->password = bcrypt($request->input('password')); } $user->save(); return redirect()->back()->withSuccess('更新成功'); }
2. ?? ?? ??
(1) ?? ??
?? ?? ??? ?? ??? ?????.
class Product extends Model { protected $fillable = ['name', 'price', 'stock', 'description', 'image']; public function getAvatarAttribute($value) { return asset('storage/' . $value); } }
???? ???? ??? ???( ) ?? ??? ???? ?????. ???? ??? ??? ????.
public function index() { $products = Product::all(); return view('product.index', compact('products')); }
? ????? ?? ??? ???? ????? ?? ???. ???? ??? ??? ????.
@foreach ($products as $product) <div class="col-md-4"> <div class="card mb-4 shadow-sm"> <img src="{{ $product- alt="Laravel? ???? ??? ?? ?? ???? ???? ??" >image }}" width="100%"> <div class="card-body"> <h5 class="card-title">{{ $product->name }}</h5> <p class="card-text">{{ $product->description }}</p> <div class="d-flex justify-content-between align-items-center"> <div class="btn-group"> <a href="{{ route('product.show', $product->id) }}" class="btn btn-sm btn-outline-secondary">查看</a> </div> <small class="text-muted">{{ $product->price }}元</small> </div> </div> </div> </div> @endforeach
(2) ?? ????
???? ??? ?? ????? ???? ?? show() ???? ?????. ???? ??? ??? ????.
public function show($id) { $product = Product::findOrFail($id); return view('product.show', compact('product')); }
? ????? ??? ?? ??? ???? ???. ???? ??? ??? ????.
<div class="row"> <div class="col-md-6"> <img src="{{ $product- alt="Laravel? ???? ??? ?? ?? ???? ???? ??" >image }}" width="100%"> </div> <div class="col-md-6"> <h2>{{ $product->name }}</h2> <p>價格:{{ $product->price }}元</p> <p>庫存:{{ $product->stock }}件</p> <form action="{{ route('product.buy', $product->id) }}" method="post"> @csrf <div class="form-group"> <label for="quantity">數(shù)量</label> <input type="number" name="quantity" class="form-control" min="1" max="{{ $product->stock }}" required> </div> <button type="submit" class="btn btn-primary">立即購買</button> </form> </div> </div>
3. ?? ?? ??
(1) ?? ??
???? ??? ?? ??? ???? index() ???? ?????. ???? ??? ??? ????.
public function index() { $orders = Order::where('user_id', Auth::id())->get(); return view('order.index', compact('orders')); }
? ????? ?? ??? ???? ????? ?? ???. ???? ??? ??? ????.
@foreach ($orders as $order) <tr> <td>{{ $order->id }}</td> <td>{{ $order->product->name }}</td> <td>{{ $order->quantity }}</td> <td>{{ $order->price }}</td> <td>{{ $order->status }}</td> </tr> @endforeach
(2) ?? ??
???? ??? ?? ?? ??? ???? ?? buy() ???? ??????. ???? ??? ??? ????.
public function buy(Request $request, $id) { $product = Product::findOrFail($id); $this->validate($request, [ 'quantity' => 'required|integer|min:1|max:' . $product->stock, ]); $total_price = $product->price * $request->input('quantity'); $order = new Order; $order->user_id = Auth::id(); $order->product_id = $product->id; $order->quantity = $request->input('quantity'); $order->price = $total_price; $order->status = '待支付'; $order->save(); // 跳轉(zhuǎn)到第三方支付頁面 return redirect()->to('https://example.com/pay/' . $total_price); }
4. ?? ?? ??
(1) ?? ?? ??
???? ??? ?? ?? ?? ??? ???? ?? create() ???? ?????. ???? ??? ??? ????.
public function create(Request $request) { $product = Product::findOrFail($request->input('product_id')); $this->validate($request, [ 'group_size' => 'required|integer|min:2|max:' . $product->stock, 'group_price' => 'required|numeric|min:0', 'expired_at' => 'required|date|after:now', ]); $order = new Order; $order->user_id = Auth::id(); $order->product_id = $product->id; $order->quantity = $request->input('group_size'); $order->price = $request->input('group_price') * $request->input('group_size'); $order->status = '待成團'; $order->save(); $group = new Group; $group->order_id = $order->id; $group->size = $request->input('group_size'); $group->price = $request->input('group_price'); $group->expired_at = $request->input('expired_at'); $group->save(); return redirect()->route('product.show', $product->id)->withSuccess('拼團創(chuàng)建成功'); }
(2) ?? ?? ??
???? ???? ?? ?? ?? ??? ???? ?? Join() ???? ?????. ???? ??? ??? ????.
public function join(Request $request, $id) { $group = Group::findOrFail($id); $user_id = Auth::id(); $product_id = $group->order->product_id; // 檢查用戶是否已參加該拼團活動 $order = Order::where('user_id', $user_id)->where('product_id', $product_id)->where('status', '待成團')->first(); if ($order) { return redirect()->route('product.show', $product_id)->withError('您已參加該拼團活動'); } // 檢查拼團活動是否已過期 if ($group->expired_at < Carbon::now()) { return redirect()->route('product.show', $product_id)->withError('該拼團活動已過期'); } // 檢查拼團人數(shù)是否已滿 $count = Order::where('product_id', $product_id)->where('status', '待成團')->count(); if ($count >= $group->size) { return redirect()->route('product.show', $product_id)->withError('該拼團活動已滿員'); } $order = new Order; $order->user_id = $user_id; $order->product_id = $product_id; $order->quantity = 1; $order->price = $group->price; $order->status = '待支付'; $order->group_id = $group->id; $order->save(); // 跳轉(zhuǎn)到第三方支付頁面 return redirect()->to('https://example.com/pay/' . $group->price); }
5. ?? ??
? ?? ??? ???? ?? ?3? ?? ?????? ???? ?? ?? ?? ???? ?? ?????.
4. ??
?? Laravel ?????? ???? ??? ?? ?? ???? ???? ?? ?????. ?? ? ????? ???? ?? ??? ???? ?? ??? ?? ??? ?? ?? ? ????? ???. ? ?? ?? ???? ??? ?????? ??? ?? ?????, ?? ????? ?? ???? ??? ? ??? ????.
? ??? Laravel? ???? ??? ?? ?? ???? ???? ??? ?? ?????. ??? ??? PHP ??? ????? ?? ?? ??? ?????!

? AI ??

Undress AI Tool
??? ???? ??

Undresser.AI Undress
???? ?? ??? ??? ?? AI ?? ?

AI Clothes Remover
???? ?? ???? ??? AI ?????.

Clothoff.io
AI ? ???

Video Face Swap
??? ??? AI ?? ?? ??? ???? ?? ???? ??? ?? ????!

?? ??

??? ??

???++7.3.1
???? ?? ?? ?? ???

SublimeText3 ??? ??
??? ??, ???? ?? ????.

???? 13.0.1 ???
??? PHP ?? ?? ??

???? CS6
??? ? ?? ??

SublimeText3 Mac ??
? ??? ?? ?? ?????(SublimeText3)

PHP?? ?? ??? ???? ? ?? ?? ??? ????. 1. php.ini? ?? ??? ??; 2. ? ?? (? : Apache? Setenv ?? nginx? FastCGI_Param)? ??????. 3. PHP ?????? putenv () ??? ??????. ? ??? Php.ini? ????? ??? ???? ??? ???? ? ?? ??? ?? ???? ????? ???? Putenv ()? ?? ??? ?????. ?? ???? ?? ?? (? : php.ini ?? ? ?? ??)? ???? ????. ?? ?? ??? ??? ?? ??? ????? ???? ?? ????.

Laravel? ?? ??? ?? ?? ??? ?? ?? ??? ???? ??? ??????. ?? ???? ?? ??? ????? ? ???? I/O ?? ? ?? ?? ??? ???? ???? ??? ?? ? ????. 1. ?? ????? ?? ? ? ???????? ??? ????? ?? ???? ??????. 2. ??? ? ??? ?? ? ? PhPartisAnconfig? ?? ???????. 3. ?? ??? ??? ??? ???? ?? ?? ?? ???? ???? ????. 4. ?? ?? ??? ???? ?? ??? ??? .env ??? ???? ?? ???????.

PHP ????? ?? ??? ??? ? ??? ??? CI (Continuous Integration) ????? ???? ? ????. 1. DockerFile? ???? ?? ???, ?? ??, ??? ?? ? ?? ??? ???? PHP ??? ?????. 2. Gitlabci? ?? CI/CD ??? ???? .gitlab-ci.yml ??? ?? ??, ??? ? ?? ??? ???? ?? ??, ??? ? ??? ?????. 3. PHPUNIT? ?? ??? ??? ??? ???? ?? ?? ? ???? ???? ????????. 4. Kubernetes? ?? ?? ?? ??? ???? ?? .yaml ??? ?? ?? ??? ?????. 5. Dockerfile ??? ? ??? ??? ??????

Laravel? eloquentscopes? ?? ??? ??? ??? ?????? ?? ?? ??? ????? ?????. 1. ?? ??? ???? ???? ???? ???? Post :: published (); 2. ??? ??? ?? ??? ???? ???? ?? ??? ?? ?? ?? ??? ???? ???? ??? ?????? ??? ???? ???????. 3. ????? ?? ?? ?? ??? ??? ?? ?? ??? ?? ? ? ??? ?? ? ? ?? ?? ??? ?????. 4. ?? ??? ? ??? ?? ???? ? ??? ? ?? ??, ?? ??, ?? ???? ? ?? ?????????.

CreateAhelpers.phpfileInapp/helperswithCustOmFunctionsikeFormatPrice, isactiveroute, andisAdmin.2.addTheFileTothe "??"sectionOfcomposer.jsonUnderAutoLoad.3.runcomposerDump-AUTOLOADTOMAKETHINGTICTIONSGLOBELYAVAILABLE.4.USETHEHELPERFUNCUNTION

?? ?? ?? : ?? ????? PHP? ?? Error_Log ()? ??? ? ????. ????? ???? ??? ?? ??? ?????? ???? ?? ??? ? ?? ??? ???? ??? ?? ???, ??, ?? ? ?? ? ?? ?? ??? ???? ??? ??????. 2. ??? ?? ?? : ??? ??? ??? ??? ? ??? ?? ??? ??? ?? ??? ??? ??????? ??????. MySQL/PostgreSQL? ???? ??? ? ???? ??????. Elasticsearch Kibana? ? ???/? ???? ?????. ???, ??? ?? ? ??? ? ?? ??? ?? ??????. 3. ?? ? ?? ????? : ??, ???, ?? ? ??? ??? ??????. Kibana? ?? ????? PHP ??? ?? ?? ?????? ???? ???? ?????? ???? ??? ? ?? ??? ??? ? ????.

??, ??, ?? ?? ? ?? ??? ???? ?? ??? ?? ? ?? ???? ?????. 2. ?? ???? ???? ?? ??? ??? SONGSTOMONY ? HASMANY ?? ??; 3. ?? ? ? ?? ? ?? ??? ????? (?? ???? ?? ??? ? ??). 4. ?? ? ?? ??? ???? ?? ??? ???? ?? ? ?? ??? ???? ?? ??? ?????. 5. ?? ???? ??? ?? (?? ??)? ???? ?? ????? ??????. 6. ?? ??? ?? ??? ???? Laravel Signature URL? ???? ??? ??????. 7. ? ?? ?? ? ? ?? ??? ?? ?? ??? ?? ??? ?????. ?????? ??, ?? ?? ??? ??????????.

USEMOCKERYFORCUSTOMDENCENTICESBYSETEXPINTIONSWITHSHOULDRECEIVE ()
