yujiroのプログラミング

勉強内容をアウトプットし、サボらないようにする為のブログ

<DAY218>SOQLとSOSLを復習して気になったとこのみ抜粋あとリレーション

\ Follow me!! /

●9/27(金)
●学習日数 218日
●学習時間(本日)4時間
●累計学習時間 926.0時間
●一日あたりの平均学習時間 4.28時間

f:id:yujiro0320:20190904163314p:plain

APEXは直接DBにアクセスが可能。

Apex はデータベースに保存されている Salesforce レコードへの直接アクセスが可能であるため、SOQL クエリを Apex コードに埋め込んで、簡単に結果を取得できまます。Apex に埋め込まれた SOQL は、インライン SOQL と呼ばれます。

SOQL クエリを Apex コード内に含めるには、SOQL ステートメントを角括弧でラップして、戻り値を sObject の配列に割り当てます。たとえば、次のコードでは、2 つの項目 (名前と電話) を持つすべての取引先レコードを取得し、Account sObject の配列を返します。

比較演算子の=の代わりに

比較に等号演算子 (=) を使用する代わりに、LIKE 演算子を使用してあいまい一致検索を実行することができます。たとえば、条件 WHERE Name LIKE 'SFDC%' を使用して、名前が SFDC で開始する取引先をすべて取得できます。% ワイルドカード文字は、0 個以上の文字に一致します。_ 文字を使用して 1 文字のみに一致させることもできます。

レコード内の順序

クエリが実行されると、Salesforce から返されるレコードは特定の順序にはなっていないため、配列内のレコードの順序はクエリを実行するたびに変わる可能性があります。ただし、ORDER BY 句を追加し、レコードの並び替え基準にする項目を指定することで、返されるレコードセットを並び替えることができます。
数値項目とテキスト項目を含む、ほとんどの項目に基づいて並び替えできます。リッチテキストや複数選択リストなどの項目に基づく並び替えはできません。

SOQL クエリでの変数へのアクセス

Apex の SOQL ステートメントは、前にコロン (:) が付けられた Apex コードの変数と式を参照できます。SOQL ステートメント内でローカル変数を使用することを、バインドと呼びます。

String targetDepartment = 'Wingo';
Contact[] techContacts = [SELECT FirstName,LastName 
                          FROM Contact WHERE Department=:targetDepartment];

リレーション名の付け方

母親となるラベル名とAPIを設定
子供には複数形にした名前とする。
値を必須にする
参照関係に含まれる参照レコードは削除できません

f:id:yujiro0320:20190927162345p:plain