laravel ajax从2个表中搜索输出详细信息

时间:2017-06-16 12:33:14

标签: ajax laravel laravel-5 eloquent

我有一个搜索,查看电影表并找到匹配的标题并返回:

-title -times - 业务名称(来自业务表)

现在,films表包含一个外键business_id,它应与业务表中的id匹配

然而我收到错误(试图获取非对象的属性)

这是我的代码:

形式:

<form id="cinema_display">
    <div class="form-group">
        <input type="text" class="form-control" id="search_cinemas" onkeyup="search_cinema(this.value);" placeholder="Search film">
        </div>
        <div id="show"
        </div>
        </div>
        </form>

AJAX:

function search_cinema(cinema_value) {
    $.ajax({
        url: '/cinemasearch/' + cinema_value,
        type: 'post',
        dataType: 'html',
        success: function(data) {
            $('#show').append(data);
            $('.se-pre-con').fadeOut('slow', function () {
            $(".container").css({ opacity: 1.0 });
            });
        },
        error: function(data) {

        },
        headers: {
        'X-CSRF-Token': $('meta[name="csrf-token"]').attr('content')
        }                 
    });
}

控制器:

public function cinema_search($cinema_value) {
    $cinema_text = $cinema_value;
        if ($cinema_text==NULL) {
            $data = Film::all();
        } else {
            $data = Film::where('title', 'LIKE', '%'.$cinema_text.'%')->with('businesses')->get();
        }
        return view('cinemasearch')->with('results',$data);
    }

Film.php

public function businesses()
{
return $this->hasOne('App\Business', 'id');
}

Business.php

public function films()
{
   return $this->hasOne('App\Film', 'business_id');
}

1 个答案:

答案 0 :(得分:1)

将Film.php中的关系更改为:

public function business()
{
    return $this->belongsTo('App\Business');
}

和Business.php:

public function film()
{
    return $this->hasOne('App\Film');
}

您不必指定外键,因为您已经遵循了数据库中雄辩的命名约定。请注意现在的方法的单一命名,电影而不是电影和业务,而不是企业。