ユーザー

ユーザーとは、人々を Craft が表現するものです。

それぞれのユーザーは、デフォルトのメールアドレスとユーザー名、および、名前・写真・パスワードのオプションフィールドを持っています。他のエレメント同様、ユーザーは追加のカスタムフィールドをいくつでも持つことができます。

サイトの構築方法やコントロールパネルにユーザーのアクセスを許可するかどうかによって、関連するローカリゼーション、アクセシビリティ、および、デバッグについても設定できます。

ユーザーは、権限を微調整するために作られたグループの一部にできます。

# ユーザーの照会

ユーザークエリを利用して、テンプレートや PHP コード内でユーザーを取得できます。

{# Create a new user query #}
{% set myUserQuery = craft.users() %}

ユーザークエリを作成すると、結果を絞り込むためのパラメータをセットできます。さらに、.all() を呼び出して実行できます。User オブジェクトの配列が返されます。

エレメントクエリがどのように機能するかについては、エレメントクエリを参照してください。

# 実例

次の操作を行うことで、「Authors」ユーザーグループに含まれるユーザーのリストを表示できます。

  1. craft.users() でユーザークエリを作成します。
  2. group パラメータをセットします。
  3. .all() でユーザーを取得します。
  4. for タグを利用してユーザーをループ処理し、リストの HTML を作成します。
{# Create a user query with the 'group' parameter #}
{% set myUserQuery = craft.users()
    .group('authors') %}

{# Fetch the users #}
{% set users = myUserQuery.all() %}

{# Display the list #}
<ul>
    {% for user in users %}
        <li><a href="{{ url('authors/'~user.username) }}">{{ user.name }}</a></li>
    {% endfor %}
</ul>

# パラメータ

ユーザークエリは、次のパラメータをサポートしています。

パラメータ 説明
admin 「管理」権限を持つユーザーだけに、クエリの結果を絞り込みます。
anyStatus ステータスに基づくエレメントのフィルタを削除します。
asArray User オブジェクトではなく、データの配列として、マッチしたユーザーをクエリが返します。
can 直接ユーザーアカウントにセットされているかユーザーグループの1つを通してセットされている、特定のユーザー権限を持つユーザーだけに、クエリの結果を絞り込みます。
clearCachedResult キャッシュされた結果をクリアします。
dateCreated ユーザーの作成日に基づいて、クエリの結果を絞り込みます。
dateUpdated ユーザーの最終アップデート日に基づいて、クエリの結果が絞り込まれます。
email ユーザーのメールアドレスに基づいて、クエリの結果を絞り込みます。
firstName ユーザーのファーストネーム(名)に基づいて、クエリの結果を絞り込みます。
fixedOrder クエリの結果を id で指定された順序で返します。
group ユーザーが属するユーザーグループに基づいて、クエリの結果を絞り込みます。
groupId グループ ID ごとに、ユーザーが属するユーザーグループに基づいて、クエリの結果を絞り込みます。
hasPhoto ユーザー写真を持っている(または、持っていない)ユーザーだけに、クエリの結果を絞り込みます。
id ユーザーの ID に基づいて、クエリの結果を絞り込みます。
ignorePlaceholders craft\services\Elements::setPlaceholderElement() によってセットされたマッチするプレースホルダーエレメントを無視して、データベースに保存されたマッチするユーザーをクエリが返します。
inReverse クエリの結果を逆順で返します。
lastLoginDate ユーサーの最終ログイン日に基づいて、クエリの結果を絞り込みます。
lastName ユーザーのラストネーム(姓)に基づいて、クエリの結果を絞り込みます。
limit 返されるユーザーの数を決定します。
offset 結果からスキップされるユーザーの数を決定します。
orderBy 返されるユーザーの順序を決定します。(空の場合、デフォルトは username ASC
preferSites unique() がセットされている場合、マルチサイトでエレメント照会する際に選択されるべきサイトを決定します。
relatedTo 特定の他のエレメントと関連付けられたユーザーだけに、クエリの結果を絞り込みます。
search 検索クエリにマッチするユーザーだけに、クエリの結果を絞り込みます。
status ユーザーのステータスに基づいて、クエリの結果を絞り込みます。
trashed ソフトデリートされたユーザーだけに、クエリの結果を絞り込みます。
uid ユーザーの UID に基づいて、クエリの結果を絞り込みます。
username ユーザーのユーザー名に基づいて、クエリの結果を絞り込みます。
with 関連付けられたエレメントを eager-loaded した状態で、マッチしたユーザーをクエリが返します。

# admin

「管理」権限を持つユーザーだけに、クエリの結果を絞り込みます。

{# Fetch admins #}
{% set users = craft.users()
    .admin()
    .all() %}

# anyStatus

ステータスに基づくエレメントのフィルタを削除します。

{# Fetch all users, regardless of status #}
{% set users = craft.users()
    .anyStatus()
    .all() %}

# asArray

User オブジェクトではなく、データの配列として、マッチしたユーザーをクエリが返します。

{# Fetch users as arrays #}
{% set users = craft.users()
    .asArray()
    .all() %}

# can

直接ユーザーアカウントにセットされているかユーザーグループの1つを通してセットされている、特定のユーザー権限を持つユーザーだけに、クエリの結果を絞り込みます。

Craft によって定義された利用可能なユーザー権限のリストは、ユーザー管理を参照してください。

{# Fetch users that can access the control panel #}
{% set users = craft.users()
    .can('accessCp')
    .all() %}

# clearCachedResult

キャッシュされた結果をクリアします。

# dateCreated

ユーザーの作成日に基づいて、クエリの結果を絞り込みます。

利用可能な値には、次のものが含まれます。

取得するユーザー
'>= 2018-04-01' 2018-04-01 以降に作成されたもの。
'< 2018-05-01' 2018-05-01 より前に作成されたもの。
['and', '>= 2018-04-04', '< 2018-05-01'] 2018-04-01 から 2018-05-01 の間に作成されたもの。
{# Fetch users created last month #}
{% set start = date('first day of last month')|atom %}
{% set end = date('first day of this month')|atom %}

{% set users = craft.users()
    .dateCreated(['and', ">= #{start}", "< #{end}"])
    .all() %}

# dateUpdated

ユーザーの最終アップデート日に基づいて、クエリの結果が絞り込まれます。

利用可能な値には、次のものが含まれます。

取得するユーザー
'>= 2018-04-01' 2018-04-01 以降にアップデートされたもの。
'< 2018-05-01' 2018-05-01 より前にアップデートされたもの。
['and', '>= 2018-04-04', '< 2018-05-01'] 2018-04-01 から 2018-05-01 の間にアップデートされたもの。
{# Fetch users updated in the last week #}
{% set lastWeek = date('1 week ago')|atom %}

{% set users = craft.users()
    .dateUpdated(">= #{lastWeek}")
    .all() %}

# email

ユーザーのメールアドレスに基づいて、クエリの結果を絞り込みます。

利用可能な値には、次のものが含まれます。

取得するユーザー
'foo@bar.baz' メールアドレスが foo@bar.baz
'not foo@bar.baz' メールアドレスが foo@bar.baz ではない。
'*@bar.baz' メールアドレスが @bar.baz で終わる。
{# Fetch users with a .co.uk domain on their email address #}
{% set users = craft.users()
    .email('*.co.uk')
    .all() %}

# firstName

ユーザーのファーストネーム(名)に基づいて、クエリの結果を絞り込みます。

利用可能な値には、次のものが含まれます。

取得するユーザー
'Jane' ファーストネームが Jane
'not Jane' ファーストネームが Jane ではない。
{# Fetch all the Jane's #}
{% set users = craft.users()
    .firstName('Jane')
    .all() %}

# fixedOrder

クエリの結果を id で指定された順序で返します。

{# Fetch users in a specific order #}
{% set users = craft.users()
    .id([1, 2, 3, 4, 5])
    .fixedOrder()
    .all() %}

# group

ユーザーが属するユーザーグループに基づいて、クエリの結果を絞り込みます。

利用可能な値には、次のものが含まれます。

取得するユーザー
'foo' ハンドルが foo のグループ内。
'not foo' ハンドルが foo のグループ内ではない。
['foo', 'bar'] ハンドルが foo または bar のグループ内。
['not', 'foo', 'bar'] ハンドルが foo または bar のグループ内ではない。
UserGroup オブジェクト オブジェクトで表されるグループ内。
{# Fetch users in the Foo user group #}
{% set users = craft.users()
    .group('foo')
    .all() %}

# groupId

グループ ID ごとに、ユーザーが属するユーザーグループに基づいて、クエリの結果を絞り込みます。

利用可能な値には、次のものが含まれます。

取得するユーザー
1 ID が 1 のグループ内。
'not 1' ID が 1 のグループ内ではない。
[1, 2] ID が 1 または 2 のグループ内。
['not', 1, 2] ID が 1 または 2 のグループ内ではない。
{# Fetch users in a group with an ID of 1 #}
{% set users = craft.users()
    .groupId(1)
    .all() %}

# hasPhoto

ユーザー写真を持っている(または、持っていない)ユーザーだけに、クエリの結果を絞り込みます。

{# Fetch users with photos #}
{% set users = craft.users()
    .hasPhoto()
    .all() %}

# id

ユーザーの ID に基づいて、クエリの結果を絞り込みます。

利用可能な値には、次のものが含まれます。

取得するユーザー
1 ID が 1。
'not 1' ID が 1ではない。
[1, 2] ID が 1 または 2。
['not', 1, 2] ID が 1 または 2 ではない。
{# Fetch the user by its ID #}
{% set user = craft.users()
    .id(1)
    .one() %}

特定の順序で結果を返したい場合、fixedOrder と組み合わせることができます。

# ignorePlaceholders

craft\services\Elements::setPlaceholderElement() によってセットされたマッチするプレースホルダーエレメントを無視して、データベースに保存されたマッチするユーザーをクエリが返します。

# inReverse

クエリの結果を逆順で返します。

{# Fetch users in reverse #}
{% set users = craft.users()
    .inReverse()
    .all() %}

# lastLoginDate

ユーサーの最終ログイン日に基づいて、クエリの結果を絞り込みます。

利用可能な値には、次のものが含まれます。

取得するユーザー
'>= 2018-04-01' 2018-04-01 以降に最終ログインされたもの。
'< 2018-05-01' 2018-05-01 より前に最終ログインされたもの。
['and', '>= 2018-04-04', '< 2018-05-01'] 2018-04-01 から 2018-05-01 の間に最終ログインされたもの。
{# Fetch users that logged in recently #}
{% set aWeekAgo = date('7 days ago')|atom %}

{% set users = craft.users()
    .lastLoginDate(">= #{aWeekAgo}")
    .all() %}

# lastName

ユーザーのラストネーム(姓)に基づいて、クエリの結果を絞り込みます。

利用可能な値には、次のものが含まれます。

取得するユーザー
'Doe' ラストネームが Doe
'not Doe' ラストネームが Doe ではない。
{# Fetch all the Doe's #}
{% set users = craft.users()
    .lastName('Doe')
    .all() %}

# limit

返されるユーザーの数を決定します。

{# Fetch up to 10 users  #}
{% set users = craft.users()
    .limit(10)
    .all() %}

# offset

結果からスキップされるユーザーの数を決定します。

{# Fetch all users except for the first 3 #}
{% set users = craft.users()
    .offset(3)
    .all() %}

# orderBy

返されるユーザーの順序を決定します。(空の場合、デフォルトは username ASC

{# Fetch all users in order of date created #}
{% set users = craft.users()
    .orderBy('dateCreated asc')
    .all() %}

# preferSites

unique() がセットされている場合、マルチサイトでエレメント照会する際に選択されるべきサイトを決定します。

例えば、エレメント “Foo” がサイト A とサイト B に存在し、エレメント “Bar” がサイト B とサイト C に存在し、ここに ['c', 'b', 'a'] がセットされている場合、Foo will はサイト C に対して返され、Bar はサイト B に対して返されます。

これがセットされていない場合、現在のサイトが優先されます。

{# Fetch unique users from Site A, or Site B if they don’t exist in Site A #}
{% set users = craft.users()
    .site('*')
    .unique()
    .preferSites(['a', 'b'])
    .all() %}

# relatedTo

特定の他のエレメントと関連付けられたユーザーだけに、クエリの結果を絞り込みます。

このパラメーターがどのように機能するかの詳細については、リレーションを参照してください。

{# Fetch all users that are related to myCategory #}
{% set users = craft.users()
    .relatedTo(myCategory)
    .all() %}

検索クエリにマッチするユーザーだけに、クエリの結果を絞り込みます。

このパラメーターがどのように機能するかの詳細については、検索を参照してください。

{# Get the search query from the 'q' query string param #}
{% set searchQuery = craft.app.request.getQueryParam('q') %}

{# Fetch all users that match the search query #}
{% set users = craft.users()
    .search(searchQuery)
    .all() %}

# status

ユーザーのステータスに基づいて、クエリの結果を絞り込みます。

利用可能な値には、次のものが含まれます。

取得するユーザー
'active' (デフォルト) 有効なアカウント。
'suspended' 停止されているアカウント。
'pending' アクティベーションが保留されているアカウント。
'locked' (それが有効か停止されているかに関わらず)ロックされているアカウント。
['active', 'suspended'] 有効、または、停止されているアカウント。
{# Fetch active and locked users #}
{% set users = craft.users()
    .status(['active', 'locked'])
    .all() %}

# trashed

ソフトデリートされたユーザーだけに、クエリの結果を絞り込みます。

{# Fetch trashed users #}
{% set users = craft.users()
    .trashed()
    .all() %}

# uid

ユーザーの UID に基づいて、クエリの結果を絞り込みます。

{# Fetch the user by its UID #}
{% set user = craft.users()
    .uid('xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx')
    .one() %}

# username

ユーザーのユーザー名に基づいて、クエリの結果を絞り込みます。

利用可能な値には、次のものが含まれます。

取得するユーザー
'foo' ユーザー名が foo
'not foo' ユーザー名が foo ではない。
{# Get the requested username #}
{% set requestedUsername = craft.app.request.getSegment(2) %}

{# Fetch that user #}
{% set user = craft.users()
    .username(requestedUsername|literal)
    .one() %}

# with

関連付けられたエレメントを eager-loaded した状態で、マッチしたユーザーをクエリが返します。

このパラメーターがどのように機能するかの詳細については、エレメントの Eager-Loading を参照してください。

{# Fetch users eager-loaded with the "Related" field’s relations #}
{% set users = craft.users()
    .with(['related'])
    .all() %}