Laravel Documentation - Eloquent

From binaryoption
Jump to navigation Jump to search
Баннер1
    1. Laravel Documentation - Eloquent

Eloquent هو مُكوّن نمذجة قاعدة البيانات (Database Modeling) في إطار عمل Laravel، ويوفر طريقة أنيقة وفعالة للتفاعل مع جداول قاعدة البيانات. بدلاً من كتابة استعلامات SQL معقدة، يتيح لك Eloquent استخدام كائنات PHP لتمثيل جداول قاعدة البيانات، مما يجعل الكود أكثر قابلية للقراءة والصيانة. يهدف هذا المقال إلى تقديم شرح شامل لـ Eloquent للمبتدئين، مع التركيز على المفاهيم الأساسية والاستخدامات الشائعة.

ما هو Eloquent؟

Eloquent هو جزء من نظام ORM (Object-Relational Mapping) الذي يوفره Laravel. ببساطة، ORM هو تقنية تسمح لك بالتعامل مع البيانات في قاعدة البيانات باستخدام كائنات بدلاً من الاستعلامات النصية. هذا يوفر العديد من المزايا، بما في ذلك:

  • القراءة والكتابة السهلة: الكود يصبح أكثر وضوحًا وسهولة في الفهم.
  • الأمان: Eloquent يساعد في منع هجمات SQL Injection من خلال استخدام معلمات مُعدة (Prepared Statements).
  • القابلية للنقل: يمكنك تغيير قاعدة البيانات التي تستخدمها (MySQL, PostgreSQL, SQLite, SQL Server) دون الحاجة إلى تغيير الكثير من الكود.
  • إعادة الاستخدام: يمكنك إعادة استخدام كائنات النموذج (Model Objects) في أجزاء مختلفة من تطبيقك.

المفاهيم الأساسية

  • النماذج (Models): تمثل النماذج جداول قاعدة البيانات. كل نموذج يتوافق مع جدول واحد.
  • الهجرة (Migrations): تتيح لك الهجرة إنشاء وتعديل جداول قاعدة البيانات بطريقة منظمة وقابلة للتحكم في الإصدار.
  • العلاقات (Relationships): تحدد العلاقات بين الجداول المختلفة (على سبيل المثال، علاقة واحد لأحد، علاقة واحد لأكثر، علاقة كثير لأحد).
  • الاستعلامات (Queries): تتيح لك الاستعلام عن البيانات من قاعدة البيانات باستخدام Eloquent.

إنشاء النماذج والهجرة

لنفترض أن لدينا جدولًا باسم `users` يحتوي على أعمدة مثل `id`, `name`, `email`, و `password`.

1. إنشاء النموذج: استخدم الأمر `php artisan make:model User` لإنشاء ملف نموذج `User.php`.

2. إنشاء الهجرة: استخدم الأمر `php artisan make:migration create_users_table` لإنشاء ملف هجرة جديد. سيحتوي هذا الملف على التعليمات البرمجية لإنشاء جدول `users`.

3. تعديل الهجرة: افتح ملف الهجرة الذي تم إنشاؤه وقم بتعديل الدالة `up()` لتعريف هيكل الجدول:

```php <?php

use Illuminate\Database\Migrations\Migration; use Illuminate\Database\Schema\Blueprint; use Illuminate\Support\Facades\Schema;

return new class extends Migration {

   /**
    * Run the migrations.
    */
   public function up(): void
   {
       Schema::create('users', function (Blueprint $table) {
           $table->id();
           $table->string('name');
           $table->string('email')->unique();
           $table->timestamp('email_verified_at')->nullable();
           $table->string('password');
           $table->rememberToken();
           $table->timestamps();
       });
   }
   /**
    * Reverse the migrations.
    */
   public function down(): void
   {
       Schema::dropIfExists('users');
   }

}; ```

4. تشغيل الهجرة: استخدم الأمر `php artisan migrate` لتشغيل الهجرة وإنشاء جدول `users` في قاعدة البيانات.

الاستعلامات الأساسية

بعد إنشاء النموذج والهجرة، يمكنك البدء في التفاعل مع قاعدة البيانات باستخدام Eloquent.

  • جلب جميع السجلات:

```php $users = User::all(); ```

  • جلب سجل واحد:

```php $user = User::find(1); // جلب المستخدم الذي معرفه 1 ```

  • جلب سجلات بناءً على شروط:

```php $users = User::where('name', 'John')->get(); // جلب جميع المستخدمين الذين اسمهم John $user = User::where('email', 'john@example.com')->first(); // جلب أول مستخدم بريد إلكتروني john@example.com ```

  • إضافة سجل جديد:

```php $user = new User(); $user->name = 'Jane Doe'; $user->email = 'jane@example.com'; $user->password = bcrypt('secret'); $user->save(); ```

  • تحديث سجل موجود:

```php $user = User::find(1); $user->name = 'Updated Name'; $user->save(); ```

  • حذف سجل:

```php $user = User::find(1); $user->delete(); ```

العلاقات (Relationships)

تعتبر العلاقات من أهم جوانب Eloquent. تتيح لك تحديد كيفية ارتباط الجداول المختلفة ببعضها البعض.

  • علاقة واحد لأحد (One-to-One): مثال: كل مستخدم لديه ملف شخصي واحد فقط.

```php // في نموذج User.php public function profile() {

   return $this->hasOne(Profile::class);

}

// في نموذج Profile.php public function user() {

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

} ```

  • علاقة واحد لأكثر (One-to-Many): مثال: كل مستخدم لديه العديد من المقالات.

```php // في نموذج User.php public function posts() {

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

}

// في نموذج Post.php public function user() {

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

} ```

  • علاقة كثير لأحد (Many-to-One): هذه هي العكس من علاقة واحد لأكثر.
  • علاقة كثير لأكثر (Many-to-Many): مثال: الطلاب والمساقات. كل طالب يمكنه التسجيل في العديد من المساقات، وكل مساق يمكن أن يسجل فيه العديد من الطلاب. يتطلب هذا جدولًا وسيطًا (Pivot Table) لتخزين العلاقات.

```php // في نموذج Student.php public function courses() {

   return $this->belongsToMany(Course::class, 'student_course');

}

// في نموذج Course.php public function students() {

   return $this->belongsToMany(Student::class, 'student_course');

} ```

الاستعلامات المتقدمة

  • Eager Loading: يساعد على تجنب مشكلة N+1 queries عن طريق جلب العلاقات في نفس الاستعلام.

```php $users = User::with('posts')->get(); // جلب جميع المستخدمين مع مقالاتهم ```

  • Lazy Eager Loading: جلب العلاقات فقط عند الحاجة إليها.

```php $users = User::all(); foreach ($users as $user) {

   $user->load('posts'); // جلب مقالات المستخدم الحالي

} ```

  • Join Clauses: يمكنك استخدام `join` clauses لإنشاء استعلامات أكثر تعقيدًا.

```php $users = User::join('posts', 'users.id', '=', 'posts.user_id')->get(); ```

النطاقات (Scopes)

النطاقات هي طريقة لتحديد استعلامات قابلة لإعادة الاستخدام.

  • النطاقات المحلية:

```php // في نموذج User.php public function scopeActive($query) {

   return $query->where('is_active', 1);

}

// الاستخدام: $activeUsers = User::active()->get(); ```

  • النطاقات العالمية: تطبق على جميع الاستعلامات.

الأحداث (Events)

يمكنك استخدام الأحداث للاستماع إلى عمليات Eloquent المختلفة (مثل إنشاء، تحديث، حذف).

  • نماذج Events: يتم تشغيل هذه الأحداث قبل وبعد عمليات Eloquent.

```php // في نموذج User.php protected static function booted() {

   static::created(function (User $user) {
       // قم بتنفيذ إجراء ما عند إنشاء مستخدم جديد
   });

} ```

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

  • استخدم Eager Loading: لتجنب مشكلة N+1 queries.
  • استخدم Select Clauses: لتحديد الأعمدة التي تحتاجها فقط.
  • استخدم Cache: لتخزين البيانات التي لا تتغير بشكل متكرر.
  • استخدم Indexes: في قاعدة البيانات لتحسين أداء الاستعلامات.

مقارنة Eloquent بالخيارات الثنائية (Binary Options)

على الرغم من أن Eloquent هو جزء من تطوير الويب، إلا أن هناك بعض أوجه التشابه المفاهيمية مع الخيارات الثنائية. كلاهما يتعلق بالتنبؤ بنتائج محددة:

  • Eloquent: نتوقع نتيجة استعلام معين (على سبيل المثال، هل سيتم العثور على سجل مطابق؟). نختار الطريقة الأكثر كفاءة لتحقيق هذه النتيجة (على سبيل المثال، استخدام Eager Loading أو Select Clauses).
  • الخيارات الثنائية: نتوقع اتجاه سعر الأصل (صعود أو هبوط). نختار استراتيجية التداول التي تعطينا أفضل فرصة للربح.

هذه المقارنة هي مجرد تشبيه لتوضيح فكرة أن كلا المجالين يتطلبان التفكير الاستراتيجي والتنبؤ بالنتائج.

    • استراتيجيات الخيارات الثنائية ذات الصلة:**
  • استراتيجية 60 ثانية: تداول سريع الأجل.
  • استراتيجية مارتينجال: مضاعفة الرهان بعد كل خسارة.
  • استراتيجية المتوسط المتحرك: استخدام المتوسطات المتحركة لتحديد الاتجاهات.
  • استراتيجية اختراق النطاق: التداول على الاختراقات.
  • استراتيجية دبوس (Pin Bar): تحديد انعكاسات الاتجاه.
  • استراتيجية الرأس والكتفين: تحديد انعكاسات الاتجاه.
  • استراتيجية بولينجر باند: استخدام نطاقات بولينجر لتحديد التقلبات.
  • استراتيجية RSI: استخدام مؤشر القوة النسبية.
  • استراتيجية MACD: استخدام مؤشر التقارب والتباعد للمتوسطات المتحركة.
  • استراتيجية Fibonacci Retracement: استخدام مستويات فيبوناتشي.
    • تحليل فني:**
  • تحليل الشموع اليابانية: تفسير أنماط الشموع.
  • تحليل حجم التداول: تقييم حجم التداول.
  • تحليل الاتجاه: تحديد اتجاه السوق.
  • تحليل الدعم والمقاومة: تحديد مستويات الدعم والمقاومة.
    • مؤشرات:**
  • مؤشر القوة النسبية (RSI): قياس سرعة وتغير تحركات الأسعار.
  • مؤشر التقارب والتباعد للمتوسطات المتحركة (MACD): تحديد قوة الاتجاه.
  • المتوسطات المتحركة (Moving Averages): تنعيم بيانات الأسعار.
  • مؤشر ستوكاستيك (Stochastic Oscillator): مقارنة سعر الإغلاق بسعر نطاقه على مدى فترة زمنية محددة.
  • مؤشر ADX: قياس قوة الاتجاه.

الخلاصة

Eloquent هو أداة قوية ومرنة للتفاعل مع قواعد البيانات في Laravel. من خلال فهم المفاهيم الأساسية والعلاقات والاستعلامات المتقدمة، يمكنك بناء تطبيقات ويب فعالة وقابلة للصيانة. لا تنسَ مراعاة الأداء واستخدام أفضل الممارسات لتحقيق أقصى استفادة من Eloquent. على الرغم من أن Eloquent يركز على تطوير الويب، إلا أن هناك أوجه تشابه مفاهيمية مع مجالات أخرى مثل الخيارات الثنائية، حيث يتطلب كلا المجالين التفكير الاستراتيجي والتنبؤ بالنتائج. Laravel Eloquent ORM Database Migrations Laravel Relationships Laravel Queries Laravel Scopes Laravel Events SQL Injection ORM (Object-Relational Mapping) PHP Laravel Documentation Binary Options Technical Analysis Trading Strategies Risk Management Financial Markets Investment Volatility Indicators Trends Support and Resistance Trading Volume Candlestick Patterns Fibonacci Retracement Bollinger Bands Moving Averages RSI (Relative Strength Index) MACD (Moving Average Convergence Divergence) Stochastic Oscillator ADX (Average Directional Index) 60 Second Strategy Martingale Strategy Pin Bar Strategy Head and Shoulders Pattern Trend Following Breakout Strategy Options Trading High-Frequency Trading Algorithmic Trading Market Sentiment Capital Allocation Portfolio Management Derivatives Forex Trading Commodity Trading Stock Market Cryptocurrency Blockchain Technology Digital Assets Financial Modeling Risk Assessment Due Diligence Due Diligence Profit Maximization Loss Minimization Trading Psychology Market Analysis Economic Indicators Geopolitical Events News Trading Seasonal Patterns Correlation Analysis Regression Analysis Time Series Analysis Statistical Arbitrage Quantitative Trading Artificial Intelligence in Trading Machine Learning in Trading Big Data in Trading Cloud Computing in Trading Cybersecurity in Trading Regulatory Compliance Financial Regulations Tax Implications of Trading Trading Platforms Trading Tools Brokerage Accounts Margin Trading Leverage Stop-Loss Orders Take-Profit Orders Trailing Stop Orders Order Types Trading Charts Trading Signals Trading Communities Trading Education Trading Mentorship Trading Psychology Trading Journal Trading Plan Trading Discipline Trading Habits Trading Mindset Trading Goals Trading Strategies Trading Systems Trading Robots Automated Trading Expert Advisors Trading Algorithms Backtesting Optimization Risk-Reward Ratio Sharpe Ratio Sortino Ratio Drawdown Win Rate Profit Factor Expectancy Trading Calendar Economic Calendar Market Movers News Events Interest Rates Inflation Unemployment GDP Growth Consumer Confidence Retail Sales Housing Starts Manufacturing PMI Trade Balance Currency Exchange Rates Commodity Prices Stock Indices Bond Yields Political Stability Global Events Natural Disasters Pandemics Geopolitical Conflicts Sanctions Trade Wars Supply Chain Disruptions Technological Innovations Cyberattacks Data Breaches Regulatory Changes Financial Crises Recessions Market Corrections Bull Markets Bear Markets Sideways Markets Range-Bound Markets Trending Markets Volatile Markets Quiet Markets Liquid Markets Illiquid Markets Efficient Markets Inefficient Markets Rational Markets Irrational Markets Behavioral Finance Cognitive Biases Emotional Trading Fear and Greed Overconfidence Anchoring Bias Confirmation Bias Loss Aversion Herd Mentality Gambler's Fallacy Illusion of Control Hindsight Bias Framing Effect Mental Accounting Prospect Theory Decision-Making Problem-Solving Critical Thinking Analytical Skills Communication Skills Interpersonal Skills Time Management Stress Management Self-Discipline Patience Persistence Adaptability Resilience Continuous Learning Self-Improvement Goal Setting Motivation Focus Concentration Visualization Affirmations Positive Thinking Mindfulness Meditation Exercise Nutrition Sleep Work-Life Balance Financial Freedom Early Retirement Passive Income Wealth Creation Financial Independence Legacy Planning Philanthropy Social Responsibility Ethical Trading Sustainable Investing Impact Investing Value Investing Growth Investing Income Investing Momentum Investing Contrarian Investing Index Investing Diversification Asset Allocation Rebalancing Dollar-Cost Averaging Tax-Loss Harvesting Estate Planning Insurance Debt Management Budgeting Saving Investing Retirement Planning Financial Literacy Financial Education Financial Wellness Financial Security Financial Stability Financial Prosperity Financial Success Financial Independence Financial Freedom Financial Legacy Financial Peace of Mind Financial Empowerment Financial Abundance Financial Gratitude Financial Responsibility Financial Discipline Financial Integrity Financial Transparency Financial Accountability Financial Stewardship Financial Prudence Financial Wisdom Financial Intelligence Financial Savvy Financial Acumen Financial Expertise Financial Mastery Financial Leadership Financial Innovation Financial Transformation Financial Revolution Financial Evolution Financial Future Financial Destiny Financial Potential Financial Opportunity Financial Growth Financial Expansion Financial Prosperity Financial Abundance Financial Fulfillment Financial Happiness Financial Joy

ابدأ التداول الآن

سجّل في IQ Option (الحد الأدنى للإيداع 10 دولار) افتح حساباً في Pocket Option (الحد الأدنى للإيداع 5 دولار)

انضم إلى مجتمعنا

اشترك في قناة Telegram الخاصة بنا @strategybin لتصلك: ✓ إشارات تداول يومية ✓ تحليلات استراتيجية حصرية ✓ تنبيهات اتجاهات السوق ✓ مواد تعليمية للمبتدئين

Баннер