[PHP 7.4.11] 連想配列で値を扱う

普通の連想配列です。

$sales =
	[
		"a" => 200,
		"b" => 300,
		"c" => 400
	];

var_dump($sales);

array(3) { [“a”]=> int(200) [“b”]=> int(300) [“c”]=> int(400) }

$key と $valueがあり、連想配列の中に$keyがなければ追加していく。
arsortで降順でソートする。

$key = "d";
$value = 250;

$sales =
	[
		"a" => 200,
		"b" => 300,
		"c" => 400
	];

if($sales[$key] !== null){
	$sales[$key] += $value;
} else {
	$sales += array($key => $value);
}

arsort($sales);
var_dump($sales);

array(4) { [“c”]=> int(400) [“b”]=> int(300) [“d”]=> int(250) [“a”]=> int(200) }

なんかOKっぽいな。多分。

[MySQL8.0.22] updateでTruncated incorrect DOUBLE value

値を慌ててupdateしたい。

update users set name=’営業所’ and tel=’03-1234-5678′ where id=1;
-> ERROR 1292 (22007): Truncated incorrect DOUBLE value: ‘営業所’

なんやと!!!

update users set name=’営業所’, tel=’03-1234-5678′ where id=1;

andではなく、カンマ(,)で区切るのが正解なんだと。。
ビックリするぜ。

[CSS] CSSファイルが複数ある時のネーミング

CSSファイルの分割方法

default.css リセットのCSS・基本スタイルとなるCSSを記述しています。
common.css レイアウト・ページ独自のCSSまで全て記載
index.css トップページのCSS
about.css aboutディレクトリのCSS
product.css productディレクトリのCSS
news.css newsディレクトリのCSS

なるほど、ページ名でcssファイルを作るのね。
てっきりstyle1.css, style2.cssで行こうかと思ってた。。。
これは滅茶苦茶恥ずかしい。。

[AWS RDS] 1からの作成手順

1.subnetを2つ作成
rds-test-subnet-1a
rds-test-subnet-1c

2.ルートテーブルの作成
rds-test-routetable
L 作成したsubnet(rds-test-subnet-1a, rds-test-subnet-1c)を紐付ける

3.RDS用のSubnet group作成
rds-test-subnet-group
– 作成したsubnet(rds-test-subnet-1a, rds-test-subnet-1c)を紐付ける

4.RDS用のSecurity group作成
rds-test-security-group
L inbound ruleでsshログインできる様にしておく
L Type:MYSQL/Aurora, Protocol: TCP, Port Range: 3306

6. vpc
DNS hostnames ->Enable

5.RDSの作成
– rds-test-database
– MySQL8.0.20, db.t3.micro, General Purpose(SSD)20 GiB

6. rds-ca-2019-root.pem
rds-ca-2019-root.pemをダウンロードして、.sshに置く

7. ecからログインする
mysql -h ${endpoint}.ap-northeast-1.rds.amazonaws.com –ssl-ca=rds-ca-2019-root.pem -u root -p

vagrantからやると上手くいかんな。。。 

[Laravel8.16.0] class内でメンバ変数(共通の変数)を使いたい

Controllerのメソッドの外で変数を書くと、

$var = "変数";
public function test(){

        return $var;
    }


syntax error, unexpected ‘$var’ (T_VARIABLE), expecting function (T_FUNCTION) or const (T_CONST)

アクセス修飾子をつける

private $var = "変数";
    public function test(){

        return $this->var;
    }

public
どこからでもアクセス可能です。アクセス修飾子がない場合は、publicを指定したものと同じになります。

protected
そのクラス自身と継承クラスからアクセス可能です。つまり非公開ですが、継承は可能となります。

private
同じクラスの中でのみアクセス可能です。非公開で継承クラスからもアクセス不可能となります。
private $var = ["1","2","3"];
    public function test(){

        $var = $this->var;
        return view('admin.test', compact('var'));
    }
{{ $var[0] }}

-> 1

思った通りになる。これで良いのかな。。

### 1冊やっておいても損はない本

[Laravel8.16.0] validationの:attributesの名前が重複する時

attributesでユーザ作成時にnameを「ユーザ名」と設定済みだが、商品登録時にnameを「商品名」と使いたい時。
-> requestの方で、attributeを設定すると、上書きされる。

resources/lang/ja/validation.php

'attributes' => [
        'name'=>'ユーザ名',
    ],

app/Http/Requests/CreateProductRequest.php

public function rules()
    {
        return [
            //
            'name' => ['required'],
        ];
    }

    public function attributes()
    {
        return [
            'name'           => '商品名',
        ];
    }

こうすると、商品登録時にnameでエラーとなった場合に、きちんと「商品名」で表示される。

なるほど、データベースの設計書も作成して作り始めてるのに、今更データベース側のカラム名を変更なんてやってられない。上手くできている。

[Laravel8.16.0]disabledのフォームでバリデーションエラー時に値が消える時

以下のようにLaravel Collectiveでフォームを書いてます。
ユーザに編集して欲しくない値は、’disabled’=>’disabled’属性を付けています。

{!! Form::label('company', '会社名') !!} <span class="badge badge-secondary">必須</span>
{!! Form::text('company', null, ['class' => 'form-control col-md-12', 'disabled'=>'disabled']) !!}

これだと、form送信時にdisabled属性の値は送信されないので、バリデーションエラー時に、空欄になってしまいます。

### 解決法
-> hiddenをつける

<input type="hidden" name="company" value="{{ $client['company'] }}">
{!! Form::label('company', '会社名') !!} <span class="badge badge-secondary">必須</span>
{!! Form::text('company', null, ['class' => 'form-control col-md-12', 'disabled'=>'disabled']) !!}

この事象に関するドキュメントがないから丸一日悩んだけど、あっさり解決した。。