Ошибка при попытке объединить две таблицы в Laravel 5.2 для поискового запроса - PullRequest
0 голосов
/ 26 мая 2018

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

Таблица city создается с помощью этихполя id name.А для таблицы listings поле city_id соединяется с полем id в таблице city.На моей домашней странице у меня есть возможность, когда пользователь вводит город, результаты отправляются на страницу результатов со всеми или любыми списками из этого города, используя таблицы сверху.Здесь я сталкиваюсь с проблемами.

Это ошибка, которую я получаю, когда запускаю запрос:

Trying to get property of non-object

Вот код для формы на домашней странице:

index.blade.php

 <form action="/search" method="GET" role="search">
   {{ csrf_field() }}

   <div class="form-wrapper">
        <input type="text" class="search-query" name="q" placeholder="Search citys" autocomplete="off">
          </div>

       <button type="submit" class="btn btn-success">SEARCH</button>

  </form>

Вот мой контроллер, который выполняет запрос (listingcontroller)

public function listingsresults()
    {

      $q = Input::get ( 'q' );
      $listing = Listing::join('cities', 'listings.city_id', '=', 'cities.id')
                         ->select('listings.city_id', 'cities.name')
                         ->where ( 'name', 'LIKE', '%' . $q . '%' )
                         ->paginate(8);

      if (count ( $listing ) > 0)
        return view ( 'front-end/listingsresults' )->withDetails ( $listing )->withQuery ( $q );
      else
        return view ( 'front-end/listingsresults' )->withMessage ( 'No Details found. Try to search again !' );


    }

Моя модель листинга:

class Listing extends Model
{

    //
      protected $fillable = [

        'street',
        'city_id',
        'state_id',
        'price',
        'beds',
        'baths',
        'sqft',
        'descrip',
        'category_id',
        'user_id',
        'state_id',
        'fullpic_id',
        'extrapicone_id',
        'extrapictwo_id',
        'extrapicthree_id',
        'extrapicfour_id',
        '',

      ];

      // protected $primaryKey = 'id';

      public function user(){

          return $this->belongsTo('App\User');

      }

      public function state(){

          return $this->belongsTo('App\State');

      }

      public function city(){

          return $this->belongsTo('App\City');

      }

      public function category(){

        return $this->belongsTo('App\Category');

      }

      public function fullpic(){

        return $this->belongsTo('App\PhotoListing');

      }

}

Модель моего города:

class City extends Model
{
    //
    protected $fillable = ['name'];

}

Любойидеи о том, почему я получаю эту ошибку?Я не уверен, если это потому, что я не структурирую свой запрос правильно или нет.Также это лучший способ структурировать модели, контроллеры и представления, которые я спрашиваю, потому что я все еще пытаюсь освоить Laravel и MVC в целом.

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