Laravel-Mix issue sass scss .sourceMaps() を使っても chrome debugger で表示されないとき


mix.js('resources/assets/js/app.js', 'public/js')
.js('resources/assets/js2/app2.js', 'public/js/app2.js')

.sass('resources/assets/scss/app.scss', 'public/css')
.sass('resources/assets/scss/style.scss', 'public/css')
.sass('resources/assets/scss2/app.scss', 'public/css2')
.sass('resources/assets/scss2/style.scss', 'public/css2')
.sourceMaps();

 

js のみソースマップが作られ scss のソースマップが出ないとき…

 

mix.webpackConfig({ devtool: "inline-source-map" }); 

上記を webpack.mix.js に追加

 

参考:

github.com

github.com

jenssegers/laravel-mongodb Basic Usage on cloud9 with php7⑧ sample case

App\User ===> App\MongoMessage  Mysql Relationships

App\MessageGroup ===> App\MongoMessage hasMany Relationships

 

App\User

  public function mongoMessages() {

    return $this->hasMany(MongoMessage::class);

  }

 

App\MessageGroup

  public function mongoMessages() {

    return $this->hasMany(MongoMessage::class);

  }

 

App\MongoMessage

  public function User() {

    return $this->belongsTo(User::class);

  }

 

  public function MessageGroup() {

    return $this->belongsTo(MessageGroup::class);

  }

 

@tinker 

$user = App\User::first();

$group = App\MessageGroup::first();

 

$message = App\MongoMessage::create(["body" => "test"]);

$message = $user->mongoMessages()->save($message);

$message = $group->mongoMessages()->save($message);

 

@mongo shell

db.mongoMessage.find()

 >>> _id: ~~~

  body: test,

  user_id: 1  ・・・SQL

  messageGroup_id: ~~~  ・・・mongoDB

 

@tinker

$group = App\MessageGroup::first();

$group->mongoMessages()->latest()->first();

>>> App\MongoMessage {

  _id: ~~~,

  body: test,

  user_id: 1,

  messageGroup_id: ~~~,

}

任意のメッセージグループの最新メッセージとメッセージ送信ユーザーの id を取得

 

related:

monteecristoo.hatenablog.com

Laravel 5.x よく使う query builder

updated: 2018/4/14

first() 

 get() >>> get() で複数の collection が返ってくるのでさらに処理したい場合は foreach で処理

e.g.)

$messages = App\Message::whereNull("body")->get();

foreach($messages as $message) {
  $mssage->delete();

}

 

whereIn()

whereNotIn()

whereNull()

latest()

oldest()

 

20 Laravel Eloquent Tips and Tricks

laravel-news.com

jenssegers/laravel-mongodb Basic Usage on cloud9 with php7⑦ convert mongoDB to Mysql

  1. setting up Mysql Relationships
  2. create the route and controller 
  3. fetch the data from mongoDB
  4. extract the value from the response(3)
  5. fetch the data from Mysql using the value(4)
  6. return the response

1.

  @app\user

    use Jenssegers\Mongodb\Eloquent\HybridRelations;

    use App\MongoMessage;

    class User extends Authenticatable
    {
      use HybridRelations;

      public function mongoMessages()
      {
        return $this->hasMany(MongoMessage::class);
      }

  @app\mongoMessage

    use Moloquent;

    use App\User;

    class MongoMessage extends Moloquent
{
protected $connection = 'mongodb';
protected $collection = 'mongo_messages';

protected $fillable = ['user_id', 'group', 'body', 'receiver'];

public function user()
{
return $this->belongsTo(User::class);
}

 

2. 

  @web.php

    Route::get('getMongoMessages', 'mongoController@getMongoMessages');

  @mongoController

    public function getMongoMessages{ }

 

3-6.

 

public function mongoMessages()
{
$mongoMessages = MongoMessage::get(); ③
$mMessages = array();
foreach($mongoMessages as $mongoMessage)
{
$user_id = $mongoMessage->user_id; ④
$user = User::where('id', $user_id)->first(); ⑤

$addData["name"] = $user->name;
$addData["avatar"] = $user->avatar;
$mongoArray = $mongoMessage->toArray();
$mongoArray += $addData;

array_push($mMessages, $mongoArray);
}
return $mMessages; ⑥
}

 

$mongoMessage->user_id は Mysql Relationships によって mongoMessage が作成された時点で自動的に付与される。

$mMessages は元々の mongoDB から返された値の user_id を使って Mysql base DB の User から name と avatar を取得してそれらが追加された値になる。

参考:

monteecristoo.hatenablog.com

monteecristoo.hatenablog.com

 

 

Git 色々

updated: 2018/6/2

 

yarn run watch (npm run watch) などを使用中にbranchの切り替えを行うと予期しないファイルが更新されてうまくmerge出来ないことがあるので出来れば一度watchを解除してからbranchを切り替える。

例)masterはsourcemapを表示させていたが、branch切替後webpackの設定をいじってsourcemapをなくしていた。masterに戻ってmergeしようとしたらsourcemapが自動で付与されてそのファイルが衝突してしまうようになる。

 

 

git ミスしたpushの取り消し 

@local

git reset --soft HEAD^

--soft: local の code は削除しないで維持

HEAD^: ひとつ前

 

git push origin master -f

-f: 強制的に push

PHP 倉庫

updated: 2018/4/6

 

複数の値を返す

>>> 配列を使う

return array($a, $b);

参考:

関数/メソッドから複数の値を返すには(多値返却) | hydroculのメモ

 

配列に連想配列を追加

$hoge = array('key1'=>'value1');
$hoge += array('key2'=>'value2');

var_dump($hoge);
//=>array(2) { ["key1"]=> string(6) "value1" ["key2"]=> string(6) "value2" }

参考:

qiita.com

 

配列 リファレンス

PHP: 配列 関数 - Manual

 

配列演算子

$a = [1,2];

$b = [1,3];

$c = [1,3,4];

$d = [];

$d += $a;

>>> $d = [1,2]

$d += $b;

>>> $d = [1,2]

$d += $c;

>>> $d = [1,2,4]

PHP: 配列演算子 - Manual

Laravel + VueJS multi vue files loading

@webpack.mix.js

mix.js('resources/assets/js/app.js', 'public/js')
.js('resources/assets/js2/app2.js', 'public/js');

 

@resources/assets/js/app.js

app.js に実装したい routing, components を読み込む
const routes = [
{ path: '/user/:id',
component: Profile,
children: [
{
path: '', component: Activity,
},

{
path: 'follow', component: Follows
},

{
path: 'activity', component: Activity
}
]
},

同一 app.js ファイル内での link は router-link で

<ul>
<li v-for="list in currentNav">
<router-link :to="list[0]" activeClass="active" v-html="list[1]" >{{ list[1] }}</router-link>
</li>
</ul>

app2.js への link は <a href="hoge"> を使ってページをリロードさせて app2.js を読み込ませる。 

 

SPAにした時のファイルの肥大化を分散して防ぐ