Ray Lee | 李宗叡
Learn or Die
Published in
6 min readMar 20, 2021

--

Photo by Jon Tyson on Unsplash

# 版本

Laravel 8.x

# 前言

我喜歡使用 Laravel 開發的感覺, 除了開發快速, 程式碼簡潔且優雅之外, Laravel 框架本身也是一個很好的學習參照物。 本篇主要將官方文件重點整理成 Q&A 的形式呈現, 原子化的概念, 這方式並不適用於每個人, 但若對你有幫助, 我會很開心。

# 目錄

Laravel — 官方文件原子化翻譯 — 目錄

# Available Methods

以下的 Laravel example code 的意思是?

  • Example:
<?php
$users->contains(1);

$users->contains(User::find(1));
  • Answer: 判斷 Eloquent collection $users 是否含有 primary key 為 1 的 model, 或直接帶入 model

以下的 Laravel example code 的意思是?

  • Example:
<?php
use App\Models\User;

$users = $users->diff(User::whereIn('id', [1, 2, 3])->get());
  • Answer: 取得 $users eloquent collection 中, 非 User::whereIn('id', [1,2,3])->get() 的 model

以下的 Laravel example code 的意思是?

  • Example:
<?php
$users = $users->except([1, 2, 3]);
  • Answer: 取得 $users eloquent model 中, primary key 非為 [1,2,3] 的 models

以下的 Laravel example code 的意思是?

  • Example:
<?php
$users = User::all();

$user = $users->find(1);
  • Answer: 可帶入 primary key, 或 array of primary key, 或 model

以下的 Laravel example code 的意思是?

  • Example:
<?php
$users = $users->fresh();

$users = $users->fresh('comments');
  • Answer: 從資料庫重新取得 $users eloquent collection 中的所有 model, 若是帶入 relation, 則該 relation 會被 eager loaded

以下的 Laravel example code 的意思是?

  • Example:
<?php
use App\Models\User;

$users = $users->intersect(User::whereIn('id', [1, 2, 3])->get());
  • Answer: 取得 $users eloquent collection 中, 與 intersect() arg 重疊的 models

以下的 Laravel example code 的意思是?

  • Example:
<?php
$users->load(['comments', 'posts']);

$users->load('comments.author');
  • Answer: eager load $users eloquent collection 中所有 model 的指定 relations

以下的 Laravel example code 的意思是?

  • Example:
<?php
$users->loadMissing(['comments', 'posts']);

$users->loadMissing('comments.author');
  • Answer: 如果 $users collection 中的 model 還沒有 eager load 指定的 relation, eager load it

以下的 Laravel example code 的意思是?

  • Example:
<?php
$users->modelKeys();

// [1, 2, 3, 4, 5]
  • Answer: 取得 $user eloquent collection 中 model 的 primary key

以下的 Laravel example code 的意思是?

  • Example:
<?php
$users = $users->makeVisible(['address', 'phone_number']);
  • Answer: 將 $users eloquent collection 中的 model, 設為 hidden 的 attribute 改為 visible

以下的 Laravel example code 的意思是?

  • Example:
<?php
$users = $users->makeHidden(['address', 'phone_number']);
  • Answer: 將 $users eloquent collection 中的 model 設為 visible 的 attribute 改為 hidden

以下的 Laravel example code 的意思是?

  • Example:
<?php
$users = $users->only([1, 2, 3]);
  • Answer: 只取得 given primary key 的 model

以下的 Laravel example code 的意思是?

  • Example:
<?php
use App\Models\User;

$users = User::where('status', 'VIP')->get();

$users->toQuery()->update([
'status' => 'Administrator',
]);
  • Answer: 將 $user eloquent collection 轉為含有 whereIn 現有 model primary key constraint 的 query builder

以下的 Laravel example code 的意思是?

  • Example:
<?php
$users = $users->unique();
  • Answer: 移除 $users eloquent collection 中, 有相同 primary key 的 model

以下的 Laravel example code 的意思是?

  • Example:
<?php

namespace App\Models;

use App\Support\UserCollection;
use Illuminate\Database\Eloquent\Model;

class User extends Model
{
public function newCollection(array $models = [])
{
return new UserCollection($models);
}
}
  • Answer: 如果想要自訂特定 model 的 collection, 可使用 newCollection, 如果想要取得所有 model 的 collection, 可定義在 base model, 如 example, 可定義一個 UserCollection class, 在 newCollection method 中 return 該 class, 之後便可在 UserCollection class 中自定義 collection method

--

--

Ray Lee | 李宗叡
Learn or Die

It's Ray. I do both backend and frontend, but more focus on backend. I like coding, and would like to see the whole picture of a product.