【发布时间】:2014-09-01 20:59:35
【问题描述】:
调用未定义的方法 Illuminate\Database\Query\Builder::contains()
这是我的模型:
DepartCity.php
class DepartCity extends Eloquent {
protected $guarded = array();
public static $rules = array();
public function countries() {
return $this->belongsToMany('Country', 'depart_cities_countries', 'depcity_id', 'country_id');
}
public $timestamps = false;
}
Country.php
class Country extends Eloquent {
protected $guarded = array();
public static $rules = array();
public function depart_cities() {
return $this->belongsToMany('DepartCity', 'depart_cities_countries', 'country_id', 'depcity_id');
}
public function resorts() {
return $this->hasMany('Resort');
}
public $timestamps = false;
}
这是我的部分代码:
$dep_cities = DepartCity::all();
foreach ($dep_cities as $sletat_city) {
$countries = $swc->getCountries($sletat_city->sletat_id)->GetCountriesResult->Country;
foreach ($countries as $sletat_country) {
$sletat_country_id = $sletat_country->Id;
$country = (Country::where(array ('sletat_id' => $sletat_country_id))->first());
if (!$country) {
$country = new Country;
$country->sletat_id = $sletat_country_id;
}
$country->name = $sletat_country->Name;
$country->save();
if (!($country->depart_cities()->contains($sletat_city->Id))) {
$country->depart_cities()->save($sletat_city);
}
}
}
这里出现错误:
(!($country->depart_cities()->contains($sletat_city->Id)))
$country->depart_cities() 类的类型是 Illuminate\Database\Eloquent\Relations\BelongsToMany 并且没有“包含”方法,但我不明白它是如何工作的
请帮帮我:)
【问题讨论】:
-
(!($country->depart_cities->contains($sletat_city->Id))) 我在离开城市后删除了 ()。
-
仍然无法唤醒:“在非对象上调用成员函数 contains()”
-
将 $country 更改为 $country = (Country::with('depart_cities')->where(array ('sletat_id' => $sletat_country_id))->first());
-
很好,谢谢,它有效
-
添加为答案 :) @user3828730