我有一个搜索,查看电影表并找到匹配的标题并返回:
-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');
}
答案 0 :(得分:1)
将Film.php中的关系更改为:
public function business()
{
return $this->belongsTo('App\Business');
}
和Business.php:
public function film()
{
return $this->hasOne('App\Film');
}
您不必指定外键,因为您已经遵循了数据库中雄辩的命名约定。请注意现在的方法的单一命名,电影而不是电影和业务,而不是企业。