Skip to content

Latest commit

 

History

History
391 lines (232 loc) · 6.45 KB

Eloquent.md

File metadata and controls

391 lines (232 loc) · 6.45 KB

عودة

رابط الكائنات بالعلاقات - Laravel Eloquent


تخصيص جداول النماذج

class User extends Model
{
    protected $table = 'users_table';
}

التزايد والتناقص

بدلا عن

$article = Article::find($article_id);
$article->read_count++;
$article->save();

يمكنك

$article = Article::find($article_id);
$article->increment('read_count');

جلب أول عنصر أو إنشاء مدخل جديد

بدلا عن

$user = User::where('email', $email)->first();
if (!$user) {
  User::create([
    'email' => $email
  ]);
}

يمكنك

$user = User::firstOrCreate(['email' => $email]);

جلب مجموعة من مدخلات

User::find([1,2,4]);

طريقة أقصر لتوابع Where

بدلا عن

User::where('approved' ,true)->get()
# or
User::where('approved' ,false)->get()

يمكنك

User::whereApproved(true);
User::whereNotApproved(true);

استنساخ صف

$task = Tasks::find(1);
$newTask = $task->replicate();
$newTask->save();

WhereNull و whereNotNull

بدلا عن

$article = Article::where('tags' ,null)->get(); 
$article = Article::where('tags' ,'!=',null)->get(); 

يمكنك

$article = Article::whereNull('tags')->get();
$article = Article::whereNotNull('tags')->get(); 

إدراج وجلب المعرف

User::insertGetId(['name' ,'jhon doe']);

شروط متعددة..

public function productsOfToday()
{
    return User::where([
      ['role' ,'=' ,'admin'],
      ['created_at' ,'=', today()]
    ])->get();
}

WhereDate , WhereYear , WhereMonth , WhereDay , WhereTime

$usersOfThisYear = WhereYear('created_at' ,today()->year)->get();
$usersOfThisMonth = WhereYear('created_at' ,today()->month)->get();
$usersOfThisDay = WhereYear('created_at' ,today()->day)->get();

جلب أسماء أعمدة جدول ما

class YourModel extends Eloquent {
    
    public function getTableColumns() {
        return $this->getConnection()
        ->getSchemaBuilder()
        ->getColumnListing($this->getTable());
    }
    
}

التحقق من ما ان تم تحديث خاصية ما

@if($user->isDirty('email'))
<h2> تم تحديث عنوان البريد الالكتروني من قبل بالفعل ! </h2>
@endif

طريقة أقصر لاستثناء القيم الفارغة

$products = Products::where('is_available is null')->get();

طريقة أفضل لإستعمال dd()

// بدلا عن
$users = User::where('name', 'Taylor')->get();
dd($users);
// يمكنك  
$users = User::where('name', 'Taylor')->get()->dd();

منع التحديث بشكل عام

class Post extends Eloquent
{
	protected static function boot()
	{
		parent::boot();

		static::updating(function($model)
		{
			return false;
		});
	}
}

جلب صفوف عشوائية

// بدلا عن
$users = User::orderByRaw('RAND()')->take(10)->get();
// يمكنك
$users = User::inRandomOrder()->take(10)->get();

جلب الصفوف التي تملك صفوفا أبناء فقط

$categories = Category::with('products')->has('products')->get();

تعداد العناصر الأبناء

بفرض أنك تريد مثلا جلب مجموع منتجات كل فئة ما بجانب معلومات الفئات

# يمكنك  
$categories = Categories::withCount('products')->get();