Laravel实时服务器无法正常加载

时间:2013-07-31 15:47:43

标签: php laravel laravel-4 eloquent ardent

我有一些代码在我的本地机器上运行正常(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。

这可能是一个热心问题,但我尝试将extend Ardent替换为extend Eloquent无效。

1 个答案:

答案 0 :(得分:0)

您的with('itemList')是正确的,因为它应该是设置关系的函数的名称。我有一种感觉,问题可能出在那之后的where子句。尝试懒惰的急切加载。

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