Проблема с извлечением данных из базы данных в Laravel - PullRequest
5 голосов
/ 02 июля 2019

У меня есть форма поиска, чтобы перечислить свойства / объявления по определенным критериям. Я пытаюсь получить все свойства на основе предложения или спроса, зависит от того, что нажимается в форме. У меня три стола

properties (id, price, location)

properties_categories (property_id, category_id)

categories (id, category, priority) 

В категории строк в таблице категорий есть два значения: предложение и спрос. С текущим кодом, когда я выбираю предложение или требование и нажимаю «Отправить», я получаю [] пустой массив. Любая помощь приветствуется. Вот мой код:

category.php

<?php
namespace App;

use Illuminate\Database\Eloquent\Model;

class Category extends Model
{
    public $timestamps = false;

    public function property()
    {
        return $this->belongsToMany(Property::class);
    }

}

Property.php

<?php
namespace App;

use Illuminate\Database\Eloquent\Model;

class Property extends Model
{
    protected $guarded = ['id'];

    public function category()
    {
        return $this->belongsToMany(Category::class, 'properties_categories')->orderBy('priority', 'asc');
    }
}

CategoryController.php

<?php
namespace App\Http\Controllers;

use App\Category;
use App\Http\Controllers\Controller;
use App\Property;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Redirect;

class CategoryController extends Controller
{
    public function index()
    {
        return view('categories.search', compact('data'));
    }

    public function search($propertyBidAsk, $propertyType, $propertyPayment, $city, $price, $quadrature, Request $request, Property $property)
    {
        $category = $property->category;

        if (!empty($request->propertyBidAsk)) {

           return $property->category()->where('category', $request->propertyBidAsk)->get();
        }  

        $results = $property;

        return view('categories.search', compact('category', 'results'));
    }

}

search.blade.php

<div>

 @if(isset($results))
    <table class="table">
        <thead>
            <th>Property Bid Ask</th>
        </thead>
        <tbody>

        @foreach ($results as $result)
            <tr>
                <td>{{ $result->category[0]->category }}</td>
            </tr>
        @endforeach

      </tbody>
    </table>
 @endif

 </div>

 <form id="searchForm" method="GET" action="/search">
     <div class="col-md-4 mb-6">
     <h5>Payment</h4>
         <div class="d-block my-3">
             <div class="custom-control custom-radio">
             <input id="offer" name="propertyBidAsk" value="offer" type="radio" class="custom-control-input">
             <label class="custom-control-label" for="offer">Offer</label>
        </div>
            <div class="custom-control custom-radio">
            <input id="demand" name="propertyBidAsk" value="demand" type="radio" class="custom-control-input">
            <label class="custom-control-label" for="demand">Demand</label>
        </div>
     </div>
  </div>
 <button class="btn btn-primary btn-lg btn-block" type="submit">Search</button>
 </form>

web.php

Route::get('/search', 'CategoryController@index');

Route::get('/search/{propertyBidAsk}/{propertyPayment}/{propertyType}/
{city}/{price}/{quadrature}', 'CategoryController@search');

1 Ответ

0 голосов
/ 02 июля 2019

Используйте другое имя маршрута и удалите параметры маршрута, как показано ниже, код

Route::get('/search-data', 'CategoryController@search'); 

Также удалите параметры из действия поиска и используйте request() в функции search.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...