【问题标题】:Call to undefined method Illuminate\Database\Query\Builder::contains()调用未定义的方法 Illuminate\Database\Query\Builder::contains()
【发布时间】: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

标签: php laravel-4 eloquent


【解决方案1】:

更改以下内容;

 $country = (Country::with('depart_cities')->where(array ('sletat_id' => $sletat_country_id))->first());

 if (!($country->depart_cities->contains($sletat_city->Id))) {
       $country->depart_cities()->save($sletat_city);
 } 

【讨论】:

    猜你喜欢
    • 2014-04-23
    • 2020-01-04
    • 2018-10-03
    • 1970-01-01
    • 2019-04-02
    • 2016-11-25
    • 2017-07-19
    • 2017-01-18
    • 2018-05-11
    相关资源
    最近更新 更多