اذهب إلى المحتوى
  • 0

جلب سجلين فقط من جدول البيانات ومحددين

Hafsa Aly

السؤال

هل التابع first()  نفس دور  get()   ام انه لجلب المستخدم الاول

واذا كان لدي مثلا في جدول البيانات ثلاثة مواضيع واريد عرض اول وثاني موضوع فقط 

ومرة اخرى عرض موضوعين فقط  ولكن بطريقه عشوائيه

رابط هذا التعليق
شارك على الشبكات الإجتماعية

Recommended Posts

  • 0
  • التابع first() يقوم بجلب أول سجل يجده فقط، بينما التابع get() يجلب صنف collection، ويمكن تخيل هذا الصنف على أنه مصفوفة array من السجلات يمكن إستخدامها في حلقات التكرار مثل for loop أو while loop.
  • بالنسبة لجلب عدد محدد من السجلات فيمكن إستخدام التابع limit(num) والذي يقبل عدد يتم تمريره إليه يعبر عن عدد السجلات المراد جلبها.
$user = User::limit(2)->get();
  • بالنسبة لجلب السجلات بطريقة عشوائية in random order فيمكن إستخدام التابع ()inRandomOrder ليجلب كل السجلات في ترتيب عشوائي.
$users = User::inRandomOrder()->get();

 

تم التعديل في بواسطة سامح أشرف
إضافة كود للتوضيح
رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0
بتاريخ 10 دقائق مضت قال سامح أشرف:
  • التابع first() يقوم بجلب أول سجل يجده فقط، بينما التابع get() يجلب صنف collection، ويمكن تخيل هذا الصنف على أنه مصفوفة array من السجلات يمكن إستخدامها في حلقات التكرار مثل for loop أو while loop.
  • بالنسبة لجلب عدد محدد من السجلات فيمكن إستخدام التابع limit(num) والذي يقبل عدد يتم تمريره إليه يعبر عن عدد السجلات المراد جلبها.

$user = User::limit(2)->get();
  • بالنسبة لجلب السجلات بطريقة عشوائية in random order فيمكن إستخدام التابع ()inRandomOrder ليجلب كل السجلات في ترتيب عشوائي.

$users = User::inRandomOrder()->get();

 

ولكن  التابع limit سيجلب لي او سجلين  يراهم  اما اذا اردي سجلين مثلا السادس والسابع فماذا استخدم

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0
بتاريخ 1 دقيقة مضت قال Hafsa Aly:

ولكن  التابع limit سيجلب لي او سجلين  يراهم  اما اذا اردي سجلين مثلا السادس والسابع فماذا استخدم

يمكن إستخدام التابع whereIn والذي يقبل اسم عمود ومصفوفة من القيم

$users = User::whereIn('id', [6, 7, 9])->get();

في الكود أعلاه سيتم جلب السجلات التي تحمل معرف 6 و 7 و 9 فقط.

هنا مثال آخر لجلب كل السجلات الخاصة بالمستخدمين الذين لديهم عمر أكبر من 18 ووضع حد لعدد السجلات التي يتم جلبها وهو 100 سجل فقط

$users = User::where('age', '>=', 18)->limit(100)->get();

 

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0

first تستخدم لجلب صف واحد ( سجل واحد ) من الجدول داخل قاعدة البيانات. 

$user = User::where('id', 1)->first(); 

ويتم جلب هذا الاستعلام داخل ملف view فمثلاً

<p>{{ $user->name }}</p>

 أما get تستخدم لجلب عدة سجلات على شكل مصفوفة كما في المثال التالي

$posts = Post::where('user_id', 1)->get();

ويتم جلب هذا الاستعلام داخل ملف view فمثلاً

<table class="table table-bordered table-hover">
  <thead>
    <tr>
      <th>ID</th>
      <th>Phone</th>
      <th>ORDER</th>
      <th>DATE</th>
    </tr>
  </thead>
  <tbody>
    @foreach($posts as $post)
    <tr>
      <td>{{ $post->id ?? '' }}</td>
      <td>{{ $post->title ?? '' }}</td>
      <td>{{ $post->desc ?? '' }}</td>
      <td>{{ $post->created_at ?? '' }}</td>
    </tr>
    @endforeach
  </tbody>
</table>

ويمكن استخدام أي دالة loop مثل while , for, foreach لجلب عناصر المصفوفة العائدة من الاستعلام 

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0
بتاريخ 9 دقائق مضت قال سامح أشرف:

يمكن إستخدام التابع whereIn والذي يقبل اسم عمود ومصفوفة من القيم


$users = User::whereIn('id', [6, 7, 9])->get();

في الكود أعلاه سيتم جلب السجلات التي تحمل معرف 6 و 7 و 9 فقط.

هنا مثال آخر لجلب كل السجلات الخاصة بالمستخدمين الذين لديهم عمر أكبر من 18 ووضع حد لعدد السجلات التي يتم جلبها وهو 100 سجل فقط


$users = User::where('age', '>=', 18)->limit(100)->get();

 

واذا اردت مثلا صورته وعمره لنفس السجلات

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0
بتاريخ 5 دقائق مضت قال Hafsa Aly:

واذا اردت مثلا صورته وعمره لنفس السجلات

$users = User::select('name', 'image', 'age')->where('age', '>=', 18)->limit(100)->get();

يمكنك جلب عدة حقول باستخدام دالة select كما في المثال إعلاه, اسماء الحقول داخل دالة select هي اسماء الحقول كما في الجدول في قاعدة البيانات. 

أما لو كنتي تقصدين كيف يتم ارجاع الحقول جميعها 

$users = User::where('age', '>=', 18)->limit(100)->get();
$users = User::whereIn('id', [6, 7, 9])->get();

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

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0
بتاريخ 15 دقائق مضت قال بلال زيادة:

$users = User::select('name', 'image', 'age')->where('age', '>=', 18)->limit(100)->get();

يمكنك جلب عدة حقول باستخدام دالة select كما في المثال إعلاه. 

$aboutus = About::all();
$about = $aboutus::whereIn('id', [1,2])->get();
  هل هذه الطريقه صحيحه انني اخذ القيمه من ال instance 

 

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0
بتاريخ 2 دقائق مضت قال Hafsa Aly:

$aboutus = About::all();
$about = $aboutus::whereIn('id', [1,2])->get();
  هل هذه الطريقه صحيحه انني اخذ القيمه من ال instance 

 

لا داعي للكود التالي 

$aboutus = About::all();

الثاني يعمل بشكل صحيح مع تغيير $aboutus إلى اسم المودل هكذا 

$about =About::whereIn('id', [1,2])->get();

 

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0
بتاريخ 2 دقائق مضت قال بلال زيادة:

لا داعي للكود التالي 


$aboutus = About::all();

الثاني يعمل بشكل صحيح مع تغيير $aboutus إلى اسم المودل هكذا 


$about =About::whereIn('id', [1,2])->get();

 

ولكن انا اريد كل السجلات الموجوده في الموديل في مرة  وفي مرة اخرى اريد سجلين فقط

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0
بتاريخ الآن قال Hafsa Aly:

ولكن انا اريد كل السجلات الموجوده في الموديل في مرة  وفي مرة اخرى اريد سجلين فقط

هل هكذا 

$aboutus = About::all();

$about =About::whereIn('id', [1,2])->get();

يمكنك استخدام كل استعلام بشكل منفصل.

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0
بتاريخ 29 دقائق مضت قال بلال زيادة:

هل هكذا 


$aboutus = About::all();

$about =About::whereIn('id', [1,2])->get();

يمكنك استخدام كل استعلام بشكل منفصل.

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Slide;
use App\About;



public function homepage(){
            $slides = Slide::all();
            $about = About::whereIn('id', [1,2])->get();
            return view ('front.homepage', compact('slides','about'));
        }
هل هذا الكود صحيح

 

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0
بتاريخ الآن قال Hafsa Aly:

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Slide;
use App\About;



public function homepage(){
            $slides = Slide::all();
            $about = About::whereIn('id', [1,2])->get();
            return view ('front.homepage', compact('slides','about'));
        }
هل هذا الكود صحيح

 

ممتاز جدا يمكنك التحقق أكثر عندما تطبعي البيانات في ملف view.

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0
بتاريخ 1 دقيقة مضت قال Hafsa Aly:

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Slide;
use App\About;



public function homepage(){
            $slides = Slide::all();
            $about = About::whereIn('id', [1,2])->get();
            return view ('front.homepage', compact('slides','about'));
        }
هل هذا الكود صحيح

 

إن كانت هذه الدالة homepage بداخل class فلا توجد في الكود مشكلة.

إن الكود يعمل ولا يظهر مشكلة أو خطأ فهو كود سليم وليس بحاجة إلى تعديل، لكن يفضل أن يكون الكود منظم ومرتب ويحتوي على تعليقات لشرح كل الخطوات.

 

مثال لنفس الكود بداخل class:

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Slide;
use App\About;


class HomeController extends Controller {

  public function homepage(){
      $slides = Slide::all();
      $about = About::whereIn('id', [1,2])->get();
      return view ('front.homepage', compact('slides','about'));
	}
}

 

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0
بتاريخ 1 دقيقة مضت قال سامح أشرف:

إن كانت هذه الدالة homepage بداخل class فلا توجد في الكود مشكلة.

إن الكود يعمل ولا يظهر مشكلة أو خطأ فهو كود سليم وليس بحاجة إلى تعديل، لكن يفضل أن يكون الكود منظم ومرتب ويحتوي على تعليقات لشرح كل الخطوات.

 

مثال لنفس الكود بداخل class:


namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Slide;
use App\About;


class HomeController extends Controller {

  public function homepage(){
      $slides = Slide::all();
      $about = About::whereIn('id', [1,2])->get();
      return view ('front.homepage', compact('slides','about'));
	}
}

 

نعم هي بداخل class بالفعل

بتاريخ 18 دقائق مضت قال Hafsa Aly:

نعم هي بداخل class بالفعل

 

بتاريخ 25 دقائق مضت قال Hafsa Aly:

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Slide;
use App\About;



public function homepage(){
            $slides = Slide::all();
            $about = About::whereIn('id', [1,2])->get();
            return view ('front.homepage', compact('slides','about'));
        }
هل هذا الكود صحيح

 

اذا اردت ان اعرض من اخر السجلات الى اولها  فكيف؟

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0
اقتباس

اسفه اقصد التابع orderAsce ()  بدل من orderDesc()

يمكنك جلب السجلات بترتيب تنازلي او أفقي عن طريق الدالة orderBy هكذا بحيث DESC تنازلياً و ASC تصاعدياً

User::orderBy('title', DESC)->first();
User::orderBy('title', ASC)->first();

 

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0

لجلب سجلات مُحددة عن طريق id النموذج مثلاً 1، 4، و 9 نقوم بإستعمال التابع find على الmodel و تمرير مصفوفة تضم المُعرفات التي نريد جلب سجلاتها:

Model::find([1, 4, 9]);

أي أننا إن أردنا جلب المُستخدم الأول و الثاني يُمكننا إستخدام:

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

أما إن كنا نريد جلب سجلين عشوائيين يُمكن إستخدام هذه الطريق:

Model::inRandomOrder()->limit(2)->get();

الفرق بين first و get أن first يجلب أول سجل يُطابق الإستعلام، أما get تجلب كل السجلات التي تُطابق الإستعلام على شكل collection، مجموعة سجلات

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0
بتاريخ 33 دقائق مضت قال عبود سمير:

لجلب سجلات مُحددة عن طريق id النموذج مثلاً 1، 4، و 9 نقوم بإستعمال التابع find على الmodel و تمرير مصفوفة تضم المُعرفات التي نريد جلب سجلاتها:


Model::find([1, 4, 9]);

أي أننا إن أردنا جلب المُستخدم الأول و الثاني يُمكننا إستخدام:


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

أما إن كنا نريد جلب سجلين عشوائيين يُمكن إستخدام هذه الطريق:


Model::inRandomOrder()->limit(2)->get();

الفرق بين first و get أن first يجلب أول سجل يُطابق الإستعلام، أما get تجلب كل السجلات التي تُطابق الإستعلام على شكل collection، مجموعة سجلات

هل يوجد فرق بينها وبين هذه الطريقه 

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Slide;
use App\About;


class HomeController extends Controller {

  public function homepage(){
      $slides = Slide::all();
      $about = About::whereIn('id', [1,2])->get();
      return view ('front.homepage', compact('slides','about'));
	}
}

 

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0
بتاريخ 6 دقائق مضت قال Hafsa Aly:

هل يوجد فرق بينها وبين هذه الطريقه 

قد تلاحظين أن في laravel هناك عدة طرق للوصول إلى ما نريد، لذلك في هذه الحالة لا يوجد فرق، whereIn تُستخدم لإنشاء الإستعلام الذي نريده و get هي التي تقوم بتطبيق الإستعلام و إرجاع النتائج، بعكس find التي تقوم بالإثنين معاً، أحياناً قد لا نريد جلب السجلات بل نريد حذفها مثلاً او إجراء عملية أخرى و في هذه الحالة لن تُساعدنا find، يُمكن إستخدامها لكن سنقوم في هذه الحالة بإجراء إستعلامات زائدة لا داعي لها. فإذا كنا نريد الحذف لماذا نجلب البيانات ما دُمنا نستطيع حذفها مُباشرة:

Model::whereIn('id', [1, 2])->delete();

 

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0
بتاريخ 4 دقائق مضت قال عبود سمير:

قد تلاحظين أن في laravel هناك عدة طرق للوصول إلى ما نريد، لذلك في هذه الحالة لا يوجد فرق، whereIn تُستخدم لإنشاء الإستعلام الذي نريده و get هي التي تقوم بتطبيق الإستعلام و إرجاع النتائج، بعكس find التي تقوم بالإثنين معاً، أحياناً قد لا نريد جلب السجلات بل نريد حذفها مثلاً او إجراء عملية أخرى و في هذه الحالة لن تُساعدنا find، يُمكن إستخدامها لكن سنقوم في هذه الحالة بإجراء إستعلامات زائدة لا داعي لها. فإذا كنا نريد الحذف لماذا نجلب البيانات ما دُمنا نستطيع حذفها مُباشرة:


Model::whereIn('id', [1, 2])->delete();

 

فهمت شكرا لك وعندي سؤال اخر هو كيف اجلب جميع سجلات جدول ولكن من اخر سجل الى اول سجل

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0
بتاريخ 4 دقائق مضت قال Hafsa Aly:

فهمت شكرا لك وعندي سؤال اخر هو كيف اجلب جميع سجلات جدول ولكن من اخر سجل الى اول سجل

يُمكن ذلك عن طريق:

Model::latest()->get()

بهذا الشكل سيتم ترتيب السجل على حسب تاريخ إنشائها أي حسب العمود created_at من الأحدث تنازلياً إلى الأقدم.

إذا أردت الترتيب عن طريق عمود آخر بشكل تنازلي:

Model::orderByDesc('column_name')->get();

// او 

Model::orderBy('column_name', "desc")->get();

أما: 

Model::orderBy('column_name')->get();

// او 

Model::orderBy('column_name', 'asc')->get();

فهما نفس الشيء و سيتم الترتيب تصاعدياً.

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0
بتاريخ 5 دقائق مضت قال Hafsa Aly:

كيف احفظ صفحه الاجابات ع سؤالي هذه بحيث استطيع ان اراها بسهوله مرة اخرى

يمكنك مراجعة هذه الإجابة : الأسئلة القديمة حيث يمكنك عرض الأسئلة التي قُمتِ بطرحها بسهولة.

رابط هذا التعليق
شارك على الشبكات الإجتماعية

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...