Laravel Türkiye Discord Kanalı Forumda kod paylaşılırken dikkat edilmesi gerekenler!Birlikte proje geliştirmek ister misiniz?

Merhaba,

Daha önce de hangi yöntem doğru diyerek bir konu açmıştım. Aşağıdaki kodların ikiside istediğim işi yapıyor. Birinde sorgu sayısı yarı yarıya azalıyor ama her şey sorgu sayısı değildir diyerek konuyu buraya taşımak istedim.

Yöntem 1

# Bu şekilde $managers ve $foremans sonuçlarını gönderiyorum ve foreach() ile selectbox içinde listeliyorum.
public function create()
{
        $managers = User::getUsersByFunction('Manager');
        $foremans = User::getUsersByFunction('Foreman');
        $regions = Region::all();

        return view('hotels.create', [
            'managers' => $managers,
            'foremans' => $foremans,
            'regions' => $regions,
        ]);
}

Yöntem 2

/* Bu yöntemde ise direk $users içinde gönderiyorum ve blade içinde
 *     foreach($users->where('column', 'Manager') as $manager)
 *     foreach($users->where('column', 'Foreman') as $foreman)
 * olarak gösteriyorum.
 */
public function create()
{
        $users = User::all();
        $regions = Region::all();

        return view('hotels.create', [
            'users' => $users,
            'regions' => $regions,
        ]);
}

Evet merak ettiğim sorgu sayısı azalsa da temel mantığa uygun mu değil mi bunu öğrenmek istiyorum. Şimdiden teşekkürler.

  • mgsmus bunu yanıtladı.
  • Zalmoxis Mümkünse 2. yol ama aynı şekilde mümkünse şablonda işlem yaptırmamaya çalışın, şöyle yaparsanız daha iyi olur:

    public function create()
    {
            $users = User::whereIn('column', ['Manager', 'Foreman'])
                ->get();
                
            $regions = Region::all();
    
            return view('hotels.create', [
                'managers' => $users->where('column', 'Manager'),
                'foremans' => $users->where('column', 'Foreman'),
                'regions' => $regions,
            ]);
    }

    Zalmoxis Mümkünse 2. yol ama aynı şekilde mümkünse şablonda işlem yaptırmamaya çalışın, şöyle yaparsanız daha iyi olur:

    public function create()
    {
            $users = User::whereIn('column', ['Manager', 'Foreman'])
                ->get();
                
            $regions = Region::all();
    
            return view('hotels.create', [
                'managers' => $users->where('column', 'Manager'),
                'foremans' => $users->where('column', 'Foreman'),
                'regions' => $regions,
            ]);
    }

      mgsmus Çok teşekkür ederim, aynen önerdiğiniz gibi yaptım daha güzel oldu.

      `public function create()
      {
      $users = User::all();
      $regions = Region::all();

          return view('hotels.create', [
              'users' => $users,
              'regions' => $regions,
          ]);

      }`

      Hotel.create işi ile kullanıcı ve bölgelerin ilgisini anlayamadım.Örnek olsun diye mi verdiniz.

        deathisonitsway

        Hotel'in içinde kullanıcılar var hocam. Aynı zamanda hotelin ait olduğu bölgede seçiliyor regions tablosundan.