راکت
حل
4 پاسخ

تفاوت کوری ها

سلام
برای کوری زدن کدوم روش بهتر و استاندارد تره
1) DB::table()->where

2) User::all
چه تفاوتی با هم دارند؟


ثبت پرسش جدید
علی بیات
علی بیات
تخصص :توسعه دهنده ارشد وب
@ali.bayat7 سال پیشمطرح شد
2

@hoseinhesari.ir

در واقع User::all و متدهایی مثل اون از Query Builder لاراول استفاده میکنند. و در کنارش کلاس دیگه‌ای هم داریم به نام Eloquent Builder... کوئری‌هایی که با الکوئنت بوجود میاریم از متدهای این ۲ کلاس استفاده میکنند.

حالت زیر رو در نظر بگیرید:
فرض کنید شما میخواهید کاربری رو که id اون 1 هست رو پیدا کنید. ۲ حالت وجود داره. یا باید با Query Builder لاراول این کارو انجام بدید و یا با (Eloquent) Laravel ORM
متد Query Builder:

$user = new App\User();

$firstUser = $user->newQuery()->where('id', '=', 1)->first();

متد Eloquent:

$firstUser = App\User::find(1);

در واقع Eloquent متد کوتاه‌تر برای استفاده از Query Builder هست.


Alimotreb
Alimotreb
تخصص :کانفیگ سرور و برنامه نویس
@Alimotreb7 سال پیشمطرح شد
1

سلام
@hoseinhesari.ir

بستگی داره چه کوئری باشه
ولی خب استفاده از eloquent ها پیشنهاد میشه همه جا
همون گزینه 2
هم بهینه تره
هم کدش کمتره
هم زمان پردازشش رو گفتن کمتر و بهتر هست


علی بیات
علی بیات
تخصص :توسعه دهنده ارشد وب
@ali.bayat7 سال پیشمطرح شد
2

@hoseinhesari.ir

در واقع User::all و متدهایی مثل اون از Query Builder لاراول استفاده میکنند. و در کنارش کلاس دیگه‌ای هم داریم به نام Eloquent Builder... کوئری‌هایی که با الکوئنت بوجود میاریم از متدهای این ۲ کلاس استفاده میکنند.

حالت زیر رو در نظر بگیرید:
فرض کنید شما میخواهید کاربری رو که id اون 1 هست رو پیدا کنید. ۲ حالت وجود داره. یا باید با Query Builder لاراول این کارو انجام بدید و یا با (Eloquent) Laravel ORM
متد Query Builder:

$user = new App\User();

$firstUser = $user->newQuery()->where('id', '=', 1)->first();

متد Eloquent:

$firstUser = App\User::find(1);

در واقع Eloquent متد کوتاه‌تر برای استفاده از Query Builder هست.


حسین حصاری
حسین حصاری
@hoseinhesari.ir7 سال پیشمطرح شد
0

@ali.bayat

اینجوری که متوجه شدم در Query Builder برای ایجاد کوئری های دلخواه و مدنظر ما می باشد
ولی Eloquent ظرفیتش محدوده شامل همون رابطه های خود ساختش که فقط میتونیم از اونا استفاده کنیم
درسته به نظرتون یا برای Eloquent ها هم میشه کوری های دلخواه نوشت ؟

و اینکه Eloquent ها رو بهتره به این صورت

"
()new App\User
یا مستقیما ()User::all
نوشت؟
"


علی بیات
علی بیات
تخصص :توسعه دهنده ارشد وب
@ali.bayat7 سال پیشمطرح شد
1

@hoseinhesari.ir

روش دوم ساده‌تره.
بله٬ خیلی راحت می‌تونید کوئری‌های Custom رو بصورت Local Scope به مدل هاتون اضافه کنید.

کد داخل مدل بشکل زیر:

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class User extends Model
{

    public function scopePopular($query)
    {
        return $query->where('votes', '>', 100);
    }

    public function scopeActive($query)
    {
        return $query->where('active', 1);
    }
}

و برای استفاده هم:

$users = App\User::popular()->active()->orderBy('created_at')->get();

برای ارسال پاسخ لازم است وارد شده یا ثبت‌نام کنید

ورود یا ثبت‌نام