سلام
برای کوری زدن کدوم روش بهتر و استاندارد تره
1) DB::table()->where
2) User::all
چه تفاوتی با هم دارند؟
در واقع 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.ir
بستگی داره چه کوئری باشه
ولی خب استفاده از eloquent ها پیشنهاد میشه همه جا
همون گزینه 2
هم بهینه تره
هم کدش کمتره
هم زمان پردازشش رو گفتن کمتر و بهتر هست
در واقع 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 هست.
اینجوری که متوجه شدم در Query Builder برای ایجاد کوئری های دلخواه و مدنظر ما می باشد
ولی Eloquent ظرفیتش محدوده شامل همون رابطه های خود ساختش که فقط میتونیم از اونا استفاده کنیم
درسته به نظرتون یا برای Eloquent ها هم میشه کوری های دلخواه نوشت ؟
و اینکه Eloquent ها رو بهتره به این صورت
"
()new App\User
یا مستقیما ()User::all
نوشت؟
"
روش دوم سادهتره.
بله٬ خیلی راحت میتونید کوئریهای 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();
آیا مایل به ارسال نوتیفیکیشن و اخبار از طرف راکت هستید ؟