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

السؤال

نشر

هل التابع 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
نشر
  بتاريخ On 14‏/2‏/2021 at 13:17 قال سامح أشرف:
  • التابع 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
نشر
  بتاريخ On 14‏/2‏/2021 at 13:31 قال 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
نشر
  بتاريخ On 14‏/2‏/2021 at 13:37 قال سامح أشرف:

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

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

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

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

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

 

أظهر المزيد  

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

  • 0
نشر
  بتاريخ On 14‏/2‏/2021 at 13:48 قال 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
نشر
  بتاريخ On 14‏/2‏/2021 at 13:52 قال بلال زيادة:
$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
نشر
  بتاريخ On 14‏/2‏/2021 at 14:14 قال 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
نشر
  بتاريخ On 14‏/2‏/2021 at 14:17 قال بلال زيادة:

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

$aboutus = About::all();

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

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

 

أظهر المزيد  

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

  • 0
نشر
  بتاريخ On 14‏/2‏/2021 at 14:21 قال Hafsa Aly:

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

أظهر المزيد  

هل هكذا 

$aboutus = About::all();

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

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

  • 0
نشر
  بتاريخ On 14‏/2‏/2021 at 14:22 قال بلال زيادة:

هل هكذا 

$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
نشر
  بتاريخ On 14‏/2‏/2021 at 14:53 قال 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
نشر
  بتاريخ On 14‏/2‏/2021 at 14:53 قال 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
نشر
  بتاريخ On 14‏/2‏/2021 at 14:59 قال سامح أشرف:

إن كانت هذه الدالة 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 بالفعل

  بتاريخ On 14‏/2‏/2021 at 15:00 قال Hafsa Aly:

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

أظهر المزيد  

 

  بتاريخ On 14‏/2‏/2021 at 14:53 قال 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
نشر
  بتاريخ On 14‏/2‏/2021 at 16:12 قال عبود سمير:

لجلب سجلات مُحددة عن طريق 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
نشر
  بتاريخ On 14‏/2‏/2021 at 16:46 قال Hafsa Aly:

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

أظهر المزيد  

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

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

 

  • 0
نشر
  بتاريخ On 14‏/2‏/2021 at 17:08 قال عبود سمير:

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

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

 

أظهر المزيد  

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

  • 0
نشر
  بتاريخ On 14‏/2‏/2021 at 17:14 قال 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
نشر
  بتاريخ On 14‏/2‏/2021 at 20:27 قال 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.

  • إعلانات

  • تابعنا على



×
×
  • أضف...