事前条件
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 (?, ?, ?)