laravel hasMany没有id

时间:2014-05-31 19:31:56

标签: php mysql laravel eloquent

我在hasMany关系中面临一个非常奇怪的问题, 它没有给我任何回报,所以我开始挖掘试图找到一些东西

现在我有了这段代码

    echo $item->id ."<br />";
    var_dump($item->menuMenuCategories()->getParent()->getKey());       echo "<br>";
    var_dump($item->menuMenuCategories()->getParent()->getKeyName());  
     回声&#34;
&#34 ;;

    $query = $item->menuMenuCategories()->getBaseQuery()->toSql();
    echo $query ."<br />";

结果如下:

  

4 string(1)&#34; 4&#34;

     

string(2)&#34; id&#34;

     

GS_menu_menu_categories中选择*   GS_menu_menu_categoriesdeleted_at为空   GS_menu_menu_categoriesitem_id =?

     

GS_menu_menu_categories中选择*   GS_menu_menu_categoriesdeleted_at为空   GS_menu_menu_categoriesitem_id =?

你能看到item_id =吗? ??

这就是为什么它没有给我任何东西..

我的模型具有以这种方式定义的关系:

public function menuMenuCategories(){
    return $this->hasMany('MenuMenuCategory','item_id');
}

知道它为什么不起作用的任何想法?我有一千个地方的hasMany关系,从来没有遇到过这个问题..

谢谢

1 个答案:

答案 0 :(得分:2)

确保您已妥善提供一切;例如,item_id应位于相关表GS_menu_menu_categories中,并且应包含id主键,或者您可以指定它们是否不同,即:

class Item extends Eloquent {

    protected $table = 'items';

    public function menuMenuCategories(){
        // if GS_menu_menu_categories has "the_id" instead of "id" as pk
        return $this->hasMany('MenuMenuCategory','item_id', 'the_id');
    }
}

使用它像:

$item = Item::with('menuMenuCategories')->find(1); // the item with id 1

使用以下命令访问相关的模型集合

$menuMenuCategories = $item->menuMenuCategories;

$item->menuMenuCategories->first(); // get the first one
$item->menuMenuCategories->get(1); // get the second one
$item->menuMenuCategories->get(2); // get the third one

不要使用它:

    $item->menuMenuCategories()

因此,例如,在视图(non-blade)中:

foreach($item->menuMenuCategories as $category) {
    echo $category->propertyName;
}
相关问题