値を慌てて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ではなく、カンマ(,)で区切るのが正解なんだと。。
ビックリするぜ。
随机应变 ABCD: Always Be Coding and … : хороший
値を慌てて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ファイルの分割方法
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で行こうかと思ってた。。。
これは滅茶苦茶恥ずかしい。。
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からやると上手くいかんな。。。
/config/const.php
return [ 'num' => [1,2,3,4], ];
controller
$value = config('const.num');
dd($value);

なるほど! configの仕組みを理解した^^
すげー
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
思った通りになる。これで良いのかな。。
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でエラーとなった場合に、きちんと「商品名」で表示される。
なるほど、データベースの設計書も作成して作り始めてるのに、今更データベース側のカラム名を変更なんてやってられない。上手くできている。
以下のように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']) !!}
この事象に関するドキュメントがないから丸一日悩んだけど、あっさり解決した。。
1. 注文のModel
L 商品のModelにbelongToしている
app/Models/Order.php
public function product1(){
return $this->belongsTo('App\Models\Product', 'product_id1', 'id');
}
2. 商品のModel
L カテゴリーのModelにbelongToしている
app/Models/Product.php
public function category(){
return $this->belongsTo('App\Models\Category');
}
3. この状態で、注文一覧、カテゴリー名の検索をしたい。
belongToの検索はwhereHasなので、whereHasを階層化する。
なお、検索ワードはGetメソッドで取得して、変数としてwhereHasに渡す。
controller
$query = '検索ワード';
$orders = Order::whereHas('product1', function($q1) use($query){
$q1->whereHas('category', function($q2) use($query){
$q2->where('company', 'like', '%'.$query.'%');
});
})->get();
whereHasのqueryを更にwhereHasとする。
これで行ける。
これをOrWhereHasで更に繋げる。
そして、日付の検索条件(whereBetween, whereDate)も加える。
吐きそう。。🤑🤑🤑
### whereHas
app/Models/Order.php
public function product1(){
return $this->belongsTo('App\Models\Product', 'product_id1', 'id');
}
controller
$orders = Order::whereHas('product1', function($q){
$q->where('name', 'like', '%車%');
})->get();
dd($orders);
### orWhreHas
複数のbelongsToがある場合
app/Models/Order.php
public function product1(){
return $this->belongsTo('App\Models\Product', 'product_id1', 'id');
}
public function product2(){
return $this->belongsTo('App\Models\Product', 'product_id2', 'id');
}
controller
$orders = Order::whereHas('product1', function($q){
$q->where('name', 'like', '%セット%');
})->orWhereHas('product2', function($q){
$q->where('name', 'like', '%セット%');
})->get();
dd($orders);
OK
で、本当にやりたいのは、whrehasを2階層にしたものをorWhreHasで回したい。できるのか。。。。
0埋め処理(sprintf)とは逆に、文字列先頭からの0取り処理を実装したい。
### intにキャスト
$str = "000001"; echo (int)$str;
-> 1
### ltrim();
左端の空白を削除、第二引数で指定した文字を削除
$str = "00000222"; echo ltrim($str, 0);
-> 222
### abs();
絶対値を取得
$str = "0000033"; echo abs($str);
-> 33
int変換だと、$strの値に数値以外の値が入っていた時に、”0″と出力されてしまうので、ltrim();を使うか。
割と奥行きのあるテーマだ。