유창한 팁과 요령 - Laravel

많은 팁, 특히 데이터베이스를 다루는 데 도움이 되고 다음 프로젝트를 더욱 강력하고 정확하게 만드는 데 도움이 되는 20가지 팁이 포함된 이 멋진 기사https://laravel-news.com/eloquent-tips-tricks를 찾았습니다. 몇 가지 흥미로운 점에 대해 이야기하겠습니다.
  • 증가 및 감소

  • // Instead of this
    $article = Article::find($article_id);
    $article->read_count++;
    $article->save();
    
    // You can do this
    $article = Article::find($article_id);
    $article->increment('read_count');
    
    Article::find($article_id)->increment('read_count');
    Article::find($article_id)->increment('read_count', 10); // +10
    Product::find($produce_id)->decrement('stock'); // -1
    


  • 모델 boot() 메서드

  • public static function boot()
    {
      parent::boot();
      self::creating(function ($model) {
        $model->uuid = (string)Uuid::generate();
      });
    }
    


  • 모델 속성: 타임스탬프, 추가 등

  • class User extends Model {
        protected $table = 'users';
        protected $fillable = ['email', 'password']; // which fields can be filled with User::create()
        protected $dates = ['created_at', 'deleted_at']; // which fields will be Carbon-ized
        protected $appends = ['field1', 'field2']; // additional values returned in JSON
    }
    
    protected $primaryKey = 'uuid'; // it doesn't have to be "id"
    public $incrementing = false; // and it doesn't even have to be auto-incrementing!
    protected $perPage = 25; // Yes, you can override pagination count PER MODEL (default 15)
    const CREATED_AT = 'created_at';
    const UPDATED_AT = 'updated_at'; // Yes, even those names can be overridden
    public $timestamps = false; // or even not used at all
    


  • 여기서X

  • $users = User::where('approved', 1)->get();
    $users = User::whereApproved(1)->get();
    
    User::whereDate('created_at', date('Y-m-d'));
    User::whereDay('created_at', date('d'));
    User::whereMonth('created_at', date('m'));
    User::whereYear('created_at', date('Y'));
    


  • 기본 모델에 속함

  • {{ $post->author->name ?? '' }}
    
    // we can assign default property values to that default model
    public function author()
    {
        return $this->belongsTo('App\Author')->withDefault([
            'name' => 'Guest Author'
        ]);
    }
    


  • 뮤테이터에 의한 주문

  • // Imagine you have this
    function getFullNameAttribute()
    {
      return $this->attributes['first_name'] . ' ' . $this->attributes['last_name'];
    }
    
    $clients = Client::orderBy('full_name')->get(); // doesn't work
    
    $clients = Client::get()->sortBy('full_name'); // works!
    


  • 글로벌 범위의 기본 순서

  • protected static function boot()
    {
        parent::boot();
        // Order by name ASC
        static::addGlobalScope('order', function (Builder $builder) {
            $builder->orderBy('name', 'asc');
        });
    }
    


  • 원시 쿼리 메서드

  • // whereRaw
    $orders = DB::table('orders')
        ->whereRaw('price > IF(state = "TX", ?, 100)', [200])
        ->get();
    
    // havingRaw
    Product::groupBy('category_id')->havingRaw('COUNT(*) > 1')->get();
    
    // orderByRaw
    User::where('created_at', '>', '2016-01-01')
      ->orderByRaw('(updated_at - created_at) desc')
      ->get();
    


  • 큰 테이블에 대한 Chunk() 메서드

  • // Instead of
    
    $users = User::all();
    foreach ($users as $user) { }
    
    // You can do
    
    User::chunk(100, function ($users) {
        foreach ($users as $user) {
            // ...
        }
    });
    


  • 저장할 때 updated_at 재정의

  • $product = Product::find($id);
    $product->updated_at = '2019-01-01 10:00:00';
    $product->save(['timestamps' => false]);
    


  • update()의 결과는 무엇입니까?

  • $result = $products->whereNull('category_id')->update(['category_id' => 2]);
    


  • 또는 여러 매개변수가 있는 Where

  • // you can pass an array of parameters to orWhere() “Usual” way
    
    $q->where('a', 1);
    $q->orWhere('b', 2);
    $q->orWhere('c', 3);
    
    $q->where('a', 1);
    $q->orWhere(['b' => 2, 'c' => 3]);
    


    몇 가지 기본 사항을 제시하려고 했지만 더 깊이 들어가려면 출처를 방문하십시오.
    저와 함께 즐거우셨기를 바라며, 새로운 것을 찾는 여러분을 존경합니다.

    좋은 웹페이지 즐겨찾기