Laravel ichidagi uskuna qanday qo'ng'iroq qilish mumkin?

Ko'rish qismini yuklaydigan tekshiruvchi bor

public function homePage(){
    $categories = Category::all();
    $products = Product::all();
    return view('cart.index',compact('categories','products'));
}

Mana Manzara (asosan u erda kichik guruhni tekshirib ko'rsangiz, aks holda skip)

   

Mana checkSubcategory usuli

public function checkSubcategory($id){
    $category = Category::find($id);
    $id = $category->id;
    $subcategories = DB::table ('subcategories')
        ->join('categories_subcategories','subcategories.id','=','categories_subcategories.subcategory_id')
        ->join('categories','categories_subcategories.category_id','=','categories.id')
        ->where('categories.id','=',$id)
        ->select('subcategories.name as s_name ')
        ->get(); 

    return $subcategories;
}

Lekin View metodiga mos keladigan sintaksik xato paydo bo'ldi. xatolik nima bo'lishi mumkin?

0
StapsController :: checkSubcategory ($ id) - statik funksiya emas, shuning uchun unga o'xshash qo'ng'iroq qilolmaysiz.
qo'shib qo'ydi muallif user320487, manba

6 javoblar

Agar checkSubcategory funktsiyasi mantiqan to'g'ri ishlamasa, uni modeldagi ko'chirishingiz kerak. Masalan, siz modelingizning usulini shunday qilishingiz kerakki, siz quyidagi kabi narsalarni qila olasiz:

....
{{$row->name}}
                                        @if({{$row->checkSubcategory($row->id);}})
                                        
    ....

    Boshqacha aytganda, ushbu usulni Turkum modelida aniqlang.

0
qo'shib qo'ydi
Men hali ham bir xil xatoga yo'l qo'ymayapman.Men modeli ichiga qo'ygan bo'lsam-da ... metodni siz ko'rsatgan yo'lingiz deb hisoblayapman
qo'shib qo'ydi muallif User57, manba
men allaqachon olib tashladim.
qo'shib qo'ydi muallif User57, manba
i dd() ni ko'rsam chiqdi, lekin muammo pichoqdagi usuldan massivni qaytaradigan bosim qanday?
qo'shib qo'ydi muallif User57, manba
@HIteshTank Sinf metodini bajarish uchun uni modelda belgilang.
qo'shib qo'ydi muallif SaidbakR, manba
@ User57 Shuningdek, siz kodingizda ushbu qatorni ko'rmoqchi bo'lishingiz kerak: @if ({{StapsController :: checkSubcategory ($ row-> id)}}) ; .. id) da;}}
qo'shib qo'ydi muallif SaidbakR, manba
@ User57 Boshqa bir bildirishnoma shartli ifodasidir, shuning uchun {{}} kodini ishlatmaslik kerak @if (StapsController :: checkSubcategory ($ row-> id))
qo'shib qo'ydi muallif SaidbakR, manba
Oh, 57 soniya ilgari.
qo'shib qo'ydi muallif Danny, manba
$ row-> checkSubcategory() funktsiyasi qanday chaqiriladi?
qo'shib qo'ydi muallif HItesh Tank, manba

Funktsiyani tekshirgichdan ko'ra boshqa joyga qo'ying. Sizning holatingizda Category modelida, ehtimol?

Keyin, Sizning vazifangizdan quyidagi kabi foydalanishingiz mumkin:

$row->checkSubcategory($row->id)

Funktsiyani statik qilishning hojati yo'q.

0
qo'shib qo'ydi

Blade-da bir nechta muammo bor, bu erda tuzatilgan versiya,

 
  1. @if({{StapsController::checkSubcategory($row->id);}}) this line is wrong(syntax error)
  2. You have written two endforeach statements
  3. Your if statement was closing after endforeach statement
  4. You have missing ul tag in in else statement

Yuqoridagilarni tekshirib turing, deb umid qilaman.

0
qo'shib qo'ydi
Afsuski, men qatorni qo'shishni unutganman, lekin usulni chaqirganimdan keyin ma'lumotlarni qanday qilib bosishim mumkin?
qo'shib qo'ydi muallif User57, manba
Sizning kodingizdagi foreach döngüsünü koymadığınızı deb o'ylayman ..
qo'shib qo'ydi muallif User57, manba
{{$ sub-> s_name}} dan qanday foydalanasiz?
qo'shib qo'ydi muallif User57, manba
Yana bir oldingi loop yo'qolasizmi? @if (StapsController :: checkSubcategory ($ row-> id)) deb o'ylayman. Menimcha, bu satr @ofach (StapsController :: checkSubcategory ($ row-> id)) va $ sub bu foreach loopining misoli, noto'g'ri
qo'shib qo'ydi muallif rahulsm, manba
Mate, sizning kodingiz faqat bitta foreach loopiga ega, sizda savolni tahrirlash va yo'qolgan foreach ko'chadan manzilni to'g'rilash mumkinmi?
qo'shib qo'ydi muallif rahulsm, manba
@fachach (StapsController :: checkSubcategory ($ row-> id) $ sub) sifatida @if (StapsController :: checkSubcategory ($ row-> id)) ni o'zgartiring va
qo'shib qo'ydi muallif rahulsm, manba
va to'g'ri foreach to'g'ri joylashtirish, boshqa bir qismi olib tashlash, agar biror narsa degani emas yoki uni to'g'ri yopish,
qo'shib qo'ydi muallif rahulsm, manba

Buning oson yo'li -

  1. Maxsus yordamchi funktsiyasi

Custom Helper Function Personally I prefer you to use custom helper function because you can call this function anywhere in your project.

  • ilovangiz/Http katalogida helpers.php faylini yarating va qo'shing vazifalaringiz.
  • composer.json ichida, autoload bloklarida "files" ni qo'shing: ["app/Http/helpers.php"] .
  • Kompozitorni ishga tushirish dump-autoload .

Endi siz helpers.php faylida yozishingiz mumkin bo'lsa, osongina kirishingiz mumkin.

** Eslatma: Esda tuting, helpers.php faylida barcha kodlar funktsional asosda bo'lishi kerak. Ushbu faylda sinfdan foydalanmang.

0
qo'shib qo'ydi

Sizning usullaringizni ko'rinish ichida izlash uchun yaxshi amal emas. Bunday holda, yordamchi fayl yarating va faylni kompozitor yordamida yuklab oling yoki so'rovlar doirasidan foydalaning. Bir harakat qilib ko'ring. So'rovlar doirasidan foydalanish

Avval buni kategoriyangiz modeliga qo'shing.

function scopeCheckSubcategory(){
      DB::raw('(SELECT subcategories.name as s_name
       FROM `subcategories`
       INNER JOIN categories_subcategories on categories_subcategories.subcategory_id = subcategories.id 
       AND categories_subcategories.category_id = categories.id') AS s_name'
      )
}

Endi tortib oling

$categories = Category::CheckSubcategory->get();

Endi blade faylingizga qarang

@if($row->s_name)
...
...
@endif
0
qo'shib qo'ydi
qaerga murojaat qilish kerak?
qo'shib qo'ydi muallif User57, manba
so'rovingiz bilan. Bu bilan Turkum :: CheckSubcategory-> get (); Iltimos, ushbu laravel.com/docs/5.4/eloquent#query-scopes ni o'qib chiqing.
qo'shib qo'ydi muallif Abdullah Al Shakib, manba

Shu munosabat bilan foydalaning va ob'ekt orqali qo'ng'iroq qiling.

public function checkSubcategory()
{
    return $this->hasMany('App\subcategories');
}
0
qo'shib qo'ydi
Laravel Uzbek Community
Laravel Uzbek Community
413 ishtirokchilar

PhP |BotsUz
PhP |BotsUz
93 ishtirokchilar

Phpni o'rganishni Hohlasangiz https://t.me/joinchat/AAAAAE-KRc5dd5tPMmGmWA A'zo bo'lin