WHERE条件 「IS NOT NULL」と「IS NULL」


	$query = DB::table('sales');
	$query = $query->whereNotNull('sales.deleted_at'); // IS NOT NULL
	$query = $query->whereNull('sales.deleted_at'); // IS NULL
	

空の取得はこちらのほうが汎用的だ。

	$query = $query->whereRaw("(deleted_at IS NULL OR deleted_at = 0 OR deleted_at = '')");
	

bladeのラジオボタン

			<div class="d-inline-block mx-4">
				<div class="form-check d-inline-block">
					<input class="form-check-input" type="radio" name="deleted_at" id="deleted_at1" value="0"  @checked(old('deleted_at', $searches['deleted_at']) == 0) >
					<label class="form-check-label" for="deleted_at1">有効</label>
				</div>
				<div class="form-check d-inline-block" >
					<input class="form-check-input" type="radio" name="deleted_at" id="deleted_at2" value="1"  @checked(old('deleted_at', $searches['deleted_at']) == 1) >
					<label class="form-check-label" for="deleted_at2">無効(削除)</label>
				</div>
			</div>
	

DBからレコードを削除する | delete | destroy


    $id = 999;
    \DB::table('animals')->where('id', $id)->delete();
    

destroyメソッドはなぜか効かなくなったので中尉


    $id = 999;
    Animal::destroy($id);
    

Laravelのfetch | SPA

JavaScript


    
    let fd = new FormData(); // 送信フォームデータ
    let data = {id:123, name:'古いねこ', age:15}; // バックエンド側に送信するデータ
    let json = JSON.stringify(data);
    fd.append( "key1", json );
    
    // CSRFトークンを送信フォームデータにセットする。
    let token = jQuery('#csrf_token').val();
    fd.append( "_token", token );

    fetch('neko/reg_action', {
        method: 'POST',
        body: fd,
    })
    .then(response => {
        console.log('fetchの成功時に、サーバーから返されたレスポンスをJSON形式に変換するための処理');//■■■□□□■■■□□□
        return response.text()
            .then(text => {
                try {
                    return JSON.parse(text);
                } catch (e) {
                    this.jqErr.html(`バックエンド側でエラーが起きました。
${text}`); } }); }) .then(data => { console.log('response後の処理。こちらに諸処理を記述します。');//■■■□□□■■■□□□ console.log(data);//■■■□□□■■■□□□ }) .catch(error => { console.error(error); alert('通信エラー'); });

バックエンド

とあるコントローラのアクションメソッド。

    /**
     * SPA型・入力フォームの登録アクション
     * @return string
     */
    public function regAction(){
        
        // ログアウトになっていたらログイン画面にリダイレクト
        if(\Auth::id() == null) return redirect('login');
        
        $json=$_POST['key1'];
        $res = json_decode($json, true);
        $res['name'] = '新しい猫';
        $res['age'] = 1;
        $res['date'] = '2020-7-23';
        
        $json = json_encode($res, JSON_HEX_TAG | JSON_HEX_QUOT | JSON_HEX_AMP | JSON_HEX_APOS);
        
        return $json;
    }
    

web.php


    Route::post('neko/reg_action', 'App\Http\Controllers\NekoController@regAction');
    

エックスサーバーへデプロイ | 本番環境

セキュリティのため、laravelで開発したプロジェクトは、一般ユーザーがアクセスできないパスにソースコード一式を配置するようにします。 そしてプロジェクトのpublicディレクトリの部分だけ一般ユーザーがアクセスできる状況にする必要があります。

以下の見本ではシンボリックリンクを利用して、publicディレクトリだけ一般ユーザーが見られるようにしています。

こうしたことが難しく感じる場合、一般ユーザーに「.env」ファイルへアクセスさせないよう、なんとか工夫を凝らす必要があります。

※見本設定例です。

参考程度の見てください。

前提条件

  1. SSHでXserverに接続できるようにしてください。参考
  2. rsyncコマンドで開発環境のソースコードを本番環境にアップしますので、ローカル環境にてrsyncコマンドを使えるよう各自で設定してください。
  3. Xserverコントロールパネルにログインしてphpのバージョンを8.2以上に変更してください。
  4. XserverコントロールパネルからアクセスできるphpMyAdminを利用し、DB移植を行ってください。
① SSHでXserverにログインし、「~/example.com/neko/」に「neko2023」ディレクトリを作成する。「~/example.com/neko/」は一般ユーザーがアクセスできないディレクトリにします。)
		ssh neko
		cd ~/example.com/neko/
		mkdir neko2023 
		
② 一旦、SSH接続から抜けて(ログアウト)ローカル環境に戻り、ソースコードをアップする
		cd ~/git/neko2023
		rsync -auvz ./dev neko:~/example.com/neko/neko2023/
		
③ .envファイルをアップする。 .env.honbanファイルを開き、以下のDB設定を記入(~/git/neko2023/dev/.env.honban)
		DB_CONNECTION=mysql
		DB_HOST=localhost
		DB_PORT=3306
		DB_DATABASE=sykzsc_neko
		DB_USERNAME=sykzsc_neko
		DB_PASSWORD=パスワード
		
		
※DBユーザーとDBパスワードはXserverのコントロールパネルで作成できます。
④ .env.honbanファイルを.envのファイル名に変えて本番環境にアップする。
			rsync --force ./dev/.env.honban neko:~/example.com/neko/neko2023/dev/.env
		
⑤ SSHでXserverにログインし、シンボリックリンクを作成する
		ssh neko
		cd ~/example.com/public_html/search.example.com
		ln -s ~/example.com/neko/neko2023/dev/public neko
		
「~/example.com/public_html/search.example.com」は一般ユーザーがアクセスできるパスです。
⑤ 以上で公開版システムの本番アップ作業は完了です。 下記URLにアクセスし、画面が正常に表示されたら成功です。 https://search.example.com/neko