Laravel Ajax 从 2 个表中搜索输出详细信息



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

-标题-次-企业名称(来自企业表(

现在,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>

阿贾克斯:

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);
    }

电影.php

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

业务.php

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

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

public function business()
{
    return $this->belongsTo('AppBusiness');
}

和业务.php:

public function film()
{
    return $this->hasOne('AppFilm');
}

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

最新更新