事前条件
Git Bashなどコマンドラインツールを使えるようにしておく。手順
$ cd ~/git/red_book
$ exec winpty bash
$ php -r "readfile('https://getcomposer.org/installer');" | php
$ php composer.phar create-project "laravel/laravel=7.*" dev
$ cd ~/git/red_book/dev
$ php artisan list
.env
~ 略 ~ DB_CONNECTION=mysql DB_HOST=127.0.0.1 DB_PORT=3306 DB_DATABASE=red_book DB_USERNAME=root DB_PASSWORD= ~ 略 ~
<?php
return [
'TEST_PATH' => '大きな猫と小さな犬',
'TEST_LIST' => ['猫','ネズミ','ウシ'],
];
class NekoController extends Controller
{
public function index(){
$data = ['neko'=>'猫', 'yagi'=>'山羊'];
echo '<pre>';
echo config('const.TEST_PATH');
echo '<br>';
var_dump(config('const.TEST_LIST'));
echo '</pre>';
大きな猫と小さな犬
array(3) {
[0]=>
string(3) "猫"
[1]=>
string(9) "ネズミ"
[2]=>
string(6) "ウシ"
}
関数 | 説明 |
---|---|
url()->current(); | 現在のURLを取得する。ただし、クエリは含まない。 |
$full_url = url()->full(); | クエリを含めた現在のURLを取得する |
$root_url = url()->to('/'); | ルートURLを取得する。ドメイン名とスキームの部分を含む。 |
$rootPath = request()->getPathInfo(); | ドメイン名とスキームの部分を含まないルートURLを取得する |
app_path() | appディレクトリのパス 例:Windowsのローカル環境の場合→ C:\Users\user\git\animal\public |
base_path() | ホームのパス(ルートパス) |
config_path() | configディレクトリのパス |
database_path() | databaseディレクトリのパス |
public_path() | publicディレクトリのパス |
resource_path() | resourcesディレクトリのパス |
storage_path() | storageディレクトリのパス |
//class NekoController extends Controller
class NekoController // → 「Controller」を継承しなくても動作する
{
dump('XXX');
「var_dump()」と同じ感覚で利用できる。dump関数での出力は色分けされているので見やすい。info('Hello World!');
ルート/storage/logs/laravel.log
LOG_CHANNEL=stack
LOG_CHANNEL=daily
/storage/logs/laravel-2020-11-09.log
[2020-11-09 15:25:21] local.INFO: 今日の猫はいかがでしょう
Laravelのモデルに対する考え方
「開発者ごとにモデルに対する考えは異なる」という理由から、Modelsディレクトリは用意されていない。 必要なら自分でModelsディレクトリを用意してもいいし、別のディレクトリ名を付けてもいい。 Laravelはモデルについて型を厳密に定めておらず、それぞれの開発者に任せているようだ。 Laravel7の場合、デフォルトでのモデルクラスの置き場所は、appディレクトリの直下になっている。モデルの基本仕様
モデル名(クラス名)はテーブル名と紐づいている。(例 モデル名:BigYagi() → テーブル名:big_yagis)protected $table = 'xxx_yagis';
protected $primaryKey = 'yagi_id';
artisanコマンドでモデルを作成
$ php artisan make:model RedCat上記のコマンドを実行するとappディレクトリの直下にRedCat.phpモデルクラスファイルが作成される。
ディレクトリを指定しながらartisanコマンドでモデルを作成
$ php artisan make:model Models/RedCatappディレクトリにModelsフォルダが作成され、その中にRedCat.phpモデルクラスファイルが作成される。
例:作成されたモデルクラスのソースコード
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class RedCat extends Model
{
//
}
コントローラからモデルを使う
<?php namespace App\Http\Controllers; use Illuminate\Http\Request; use App\Models\RedCat; class NekoController { public function index(){ $md = new RedCat();
namespace App¥Models; use Illuminate¥Database¥Eloquent¥Model; class Neko extends Model { protected $table = 'nekos'; // 紐づけるテーブル名 protected $guarded = ['id']; // 予期せぬ代入をガード。 通常、主キーフィールドや、パスワードフィールドなどが指定される。 public $timestamps = false; // タイムスタンプ。 trueならcreated_atフィールド、updated_atフィールドに適用される。(それ以外のフィールドを設定で指定可) public function getData(){ $query = ¥DB::table($this->table); $query->where('id', 4); $data = $query->get(); dump($data); // ダンプ return $data; } }
$users = DB::table('users')
->where('votes', '>=', 100)
->get();
$users = DB::table('users')
->where('votes', '<>', 100)
->get();
$users = DB::table('users')
->where('name', 'like', 'T%')
->get();
公式ドキュメントより抜粋
$data = ¥DB::table('nekos')
->whereIn('id', [1, 2, 3, 4])
->get();
$data = ¥DB::table('nekos')
->whereNotIn('neko_name', ['buta', 'ゴボウ', 'ハマダイコン'])
->get();
上記のクエリビルダで作成されたSQL
select * from `nekos` where `neko_name` not in (?, ?, ?)