0

我有一些代码在我的本地机器(WAMP,PHP 5.4.3)上运行良好,但在生产服务器(CentOS,PHP 5.4.11)上运行良好,我不明白为什么,代码行有问题是:

$sharedList = SharedList::with('itemList')
                          ->where('unique_url', '=', $uniqueURL)
                          ->first();

如果我删除 with() 急切加载,那么它运行没有问题,如果我不这样做(并且我不需要在我的本地机器上),那么我得到这个:

Argument 2 passed to Illuminate\Database\Eloquent\Relations\BelongsTo::match() 
must be an instance of Illuminate\Database\Eloquent\Collection, instance of 
ItemList given, called in /home/mgc/public_html/test/vendor/laravel/framework
/src/Illuminate/Database/Eloquent/Builder.php on line 474 and defined 

/home/site/public_html/test/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Relations/BelongsTo.php

line 154: public function match(array $models, Collection $results, $relation)

来自 SharedList 模型的相关关系信息是:

class SharedList extends Ardent {

public function itemList()
{
    return $this->belongsTo('ItemList', 'list_id');
}

不知道是不是大小写问题,在with()方法中我试过ItemList、itemlist和itemList。

这可能是一个 Ardent 问题,但我尝试替换extend Ardentwithextend Eloquent无济于事。

4

1 回答 1

0

with('itemList')是正确的,因为它应该是建立关系的函数的名称。我感觉问题可能出在之后的 where 子句上。尝试延迟加载。

$sharedList = SharedList::where('unique_url',$uniqueURL)->get();
$sharedList->load('itemList');
于 2013-07-31T16:27:11.493 回答