Laravel по-русски

Русское сообщество разработки на PHP-фреймворке Laravel.

Ты не вошёл. Вход тут.

#1 10.10.2018 10:25:24

Как вывести конкретный элемент массива в laravel?

Я, сразу говорю, новичок. Может я уже загнался, может капец как сильно туплю, но ситуация становится патовой, так что help me) Laravel 5.4

Короче, вот роуты (web.php)

Route::name('admin::')->prefix('admin')->group(function(){
    //Авторизация
    Route::name('auth::')->prefix('auth')->group(function(){
        Route::name('view')->get('view', 'Admin\DashboardController@auth');
        Route::name('act')->post('act', 'Admin\DashboardController@auth');
        Route::name('logout')->get('logout', 'Admin\DashboardController@logout');
    });

    Route::name('home')->get('home', 'Admin\DashboardController@home');

    Route::name('content::')->prefix('content')->group(function(){


        Route::name('page::')->prefix('page')->group(function(){
            Route::name('list')->get('list', 'Admin\DashboardController@list');
            Route::name('about')->get('about', 'Admin\DashboardController@about');

Метод в контроллере (DashboardController@about)

public function about()
    {
        return view('upgr.static.about', [
            'dashboards' => Dashboard::orderBy('id')->paginate(16),
            'dashboard' => [],
            'delimiter' => ''
        ]);
    }

Сам файл about

@section('content')

    <main>
        <div class="container">
            <ol class="breadcrumbs">
                <li class="breadcrumbs-item"><a href="/">Главная</a></li>
                @forelse($dashboards as $dashboard)
                    <li class="breadcrumbs-item">{{ $dashboard->name }}</li>
            </ol>
        </div>
        <div class="container">
            <h1>{{ $dashboard->title }}</h1>
            <p>{!! $dashboard->description !!}</p>
            <img src="{{ $dashboard->image }}" alt="{{ $dashboard->name}}" class="img-responsive">
            @empty
                <h2>Скоро здесь появиться информация, пожалуйста подождите.</h2>
            @endforelse
        </div>
    </main>

    @endsection

При таком раскладе у меня на сайте само собой выводятся все данные из бд

Сори все, кому глаза режет мой вопрос)

По моим предположениям вместо цикла нужно поставить условие и поменять первую строку в контроллере, но что я не пытался сделать - не выходит.

Вопрос в том как мне сделать так, чтобы на вкладке "О компании" выводились данные где id = 2, на "Контакты" где id = 3 и т. д. ?

Не в сети

#2 10.10.2018 13:17:55

Re: Как вывести конкретный элемент массива в laravel?

При таком раскладе у меня на сайте само собой выводятся все данные из бд

   Вы обьясните свою хотелку более подробно . При таком раскладе как у Вас , Вы выбираете полностью все поля и все строки из таблицы . Если Вам нужны не все данные , а какая то их чать, то сам шаблон и цикл здесь практичечески не при делах. Представьте себе ситуацию , что в таблице будет 1000 000 записей , Вы что ? всю таблицу будете тянуть на клиента ????
   Вам нужно поставить условие Where в самом контроллере и уже тянуть на клиента ту часть данных которая Вам нужна .
Это если я правильно понял Вашу проблему .
Например так.\:

 	public function department_list($name,$id)
	{
		$product_list = Product::select('product.product_id','product.name','product.description',
			'product.price','product.discounted_price','product.thumbnail')
			->join('product_category','product.product_id','product_category.product_id')
			->join('category','product_category.category_id','category.category_id')
			->where('product.display',2)
			->orWhere('product.display',3)
			->Where('category.department_id',$id)
			->orderBy('product.name')
			->paginate(20);	
		    return view('products.product_list',['product_list'=>$product_list]);
	     }

P.S И чувствую , что тут попахивает не реляционной базой данных. big_smile

Изменено DzonyBB (10.10.2018 13:23:45)

Не в сети

#3 10.10.2018 15:23:34

Re: Как вывести конкретный элемент массива в laravel?

Ответ:

Убрать цикл в файле about. Удалить dashboards в контроллере и вместо:

'dashboard' => []

написать:

'dashboard' => Dashboard::find(2)

для about страницы, т. к. id инфы которую мне нужно вытащить из БД = 2.

Не в сети

#4 11.10.2018 06:08:09

Re: Как вывести конкретный элемент массива в laravel?

для about страницы, т. к. id инфы которую мне нужно вытащить из БД = 2.

  Я опять ничего не понял из Ваших сообщений , видимо плохой из меня телепат . Но если Ваша таблица в базе данных называется Dashboard и Вам нужно получить из нее строку где поле id равно 2 , то нужно сделать как то так .

 public function about()
    {
       $dashboards=Dashboard::where('id',2)->
                              orderBy('id')->
                              paginate(16); 
       return view('upgr.static.about',['dashboards'=>$dashboards]);      
    }
 

Не в сети

#5 13.10.2018 02:14:55

Re: Как вывести конкретный элемент массива в laravel?

Dashboard::orderBy('id')->paginate(16)

Dashboard::where('id',2)->orderBy('id')->paginate(16)

Выведет на одной странице 16 записей с id = 2 отсортированных по id(???)

Не в сети

#6 13.10.2018 15:22:42

Re: Как вывести конкретный элемент массива в laravel?

Выведет на одной странице 16 записей с id = 2 отсортированных по id(???)

  А разве это кто то оспаривает?????

P.S И чувствую , что тут попахивает не реляционной базой данных.

Я уже намекал об этом ТС . И возможно записей будет не только 16 , а общее к-во может быть непредсказуемым , это известно только ТС.

Не в сети

Подвал раздела