環境:
laravel@8.79.0
laravel/cashier@13.8.6
payment method 一覧の取得
$user->paymentMethods()
任意の paymentMethod の詳細を取得
$user->paymentMethods()[0]->asStripePaymentMethod()
default paymentMethod の取得(設定していれば)
$user->defaultPaymentMethod()
環境:
laravel@8.79.0
laravel/cashier@13.8.6
payment method 一覧の取得
$user->paymentMethods()
任意の paymentMethod の詳細を取得
$user->paymentMethods()[0]->asStripePaymentMethod()
default paymentMethod の取得(設定していれば)
$user->defaultPaymentMethod()
環境:
vue@2.6.14
vuex@3.6.2
<v-text-fileld v-model=$store.state.userData.nickname></v-text-field>
このように state をバインドすると値が入力するたびに stateが更新されるため、フォームが submit されようと cancel されようと関係なく submit 扱いになってしまう。
solution)
フォームで編集したいデータを値渡しで格納する state を作成する。
const state = {
userData: {nickname: '太郎', age: 20},
form: {} <<<< 値渡し格納用
}
const mutations = {
'SET_FORM_DATA'(state, payload) {
state.form = payload
}
}
let data = this.$store.state.userData
let temp = JSON.stringfy(data)
temp = JSON.parse(temp)
this.$store.commit('SET_FORM_DATA', temp)
<v-text-fileld v-model=$store.state.form.nickname></v-text-field>
ref:
環境:
laravel@8.79.0
Jenssegers/mongodb@3.8.4
サーチ対象の model 構造は以下とする
Order
{
_id: ********,
shippingStatus: [
"status" => "発送完了",
"shippingMethod" => "クロネコヤマト",
"inquiryNumber" => "11111111"
]
}
Order model から shippingStatus['status'] が"発送完了" なものを検索したいとする。
*** shippingStatus の中身が配列であることに注意
Order::where(['shippingStatus.status' => '発送完了'])->get();
環境:
Laravel@8.79.0
Jenssegers/mongodb@3.8.4
前提:
親モデル >>> User.php
MongoDB子モデル >>> ProfileDetail.php
case MySQL
migration file に以下を加筆
Schema::create('users', function Blueprint $table) {
$table->softDeletes();
...
}
Schema::create('posts', function Blueprint $table) {
$table->softDeletes();
...
}
composer require askedio/laravel-soft-cascade
@config/app.php
Askedio\SoftCascade\Providers\GenericServiceProvider::class,
@models/User.php
use Illuminate\Database\Eloquent\SoftDeletes;
class User extends Model {
use SoftDeletes;
use \Askedio\SoftCascade\Traits\SoftCascadeTrait;
protected $softCascade = ['posts']; // cascading soft-delete 対象の model を登録
}
@model/Posts.php
use Illuminate\Database\Eloquent\SoftDeletes;
class Post extends Model {
use SoftDeletes:
}
確認
php artisan tinker
$user = User::first()
$posts = $user->posts()->get()
$user->delelte()
>>> $user の deleted_at column に値が入り soft-delete 状態になる
$user->post()->get()
>>> null
$posts
>>> 先に取得した$posts の値を返す (データを消去したわけではないので先に変数として取得していれば値を返す。この際、deleted_at column は users と違い、値は入らずブランクのまま)
$user->restore()
>>> deleted_at column がブランクになる
$user->posts()
>>> 値を返すようになる
case MongoDB
migrarion file に以下を追記
Schema::create('users', function Blueprint $table) {
$table->softDeletes();
...
}
@model/ProfileDetail.php
use Moloquent;
use Jenssegers\Mongodb\Eloquent\SoftDeletes;
class ProfileDetail extends Moloquent {
use SoftDeletes;
protected $dates = ['deleted_at'];
}
laravel-soft-cascade が mongoDB に対応していないのでマニュアルでuser が delete された場合、子モデルも delete されるようにする
@model/User.php
以下を加筆 【boot をオーバーライド】
public static function boot() {
parent::boot();
static::deleted(function ($user) {
$user->profileDetail()->delete();
});
static::restored(function ($user)) {
$user->profileDetail()->restore();
}
}
確認
php artisan tinker
$user = User::first()
$profileDetail = $user->profileDetail()->get()
$user->delete()
$user->profileDetal()->get()
>>> null
$user->restore()
$user->profileDetal()->get()
>>> 値を返す
ref:
環境
Laravel@8.79.0
Jenssegers/mongodb@3.8.4
migration をしなくても ORM から query することで DB に table を作成することができるが、 migration file を作って DB table を定義したい場合、
php artisan make:migration create_MONGO_TABLE_MODEL_table
public function up() {
Schema::connection('mongodb')->create('MONGO_TABLE_NAME', function(Blueprint $table)) {
//
}
}
connection('mongodb') で接続先DBを指定
Updated: 2024_02_16
環境:
laravel@8.79.0
vue@2.6.14
@app.blade.php
<div id="vue">
<app-pageBody :passing-data="`{{ Sesssion::get('passingData'); }}`"></app-pageBody>
必ずバッククォート``で囲う
</div>
@someController.php
session()->put('passingData', "Hello this is a passing data");
@PageBody.vue
props: ['passingData']
this.passingData でLaravel側のデータを受け取り可能になる
このとき blade template 内で props name をケバブケースにしないとvueにpropsをパスできないことに注意。キャメルケースはダメ。