【问题标题】:laravel hasMany without idlaravel hasMany 没有 id
【发布时间】:2014-05-31 19:31:55
【问题描述】:

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

所以现在我有了这个代码

    echo $item->id ."<br />";
    var_dump($item->menuMenuCategories()->getParent()->getKey());       echo "<br>";
    var_dump($item->menuMenuCategories()->getParent()->getKeyName());  

回显“
”;

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

结果是这样的:

4 个字符串(1)“4”

字符串(2)“id”

GS_menu_menu_categories 中选择 * GS_menu_menu_categories.deleted_at 为空且 GS_menu_menu_categories.item_id = ?

GS_menu_menu_categories 中选择 * GS_menu_menu_categories.deleted_at 为空且 GS_menu_menu_categories.item_id = ?

你能看到 item_id = 吗? ??

这就是为什么它没有给我任何回报..

我的模型有这样定义的关系:

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

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

谢谢

【问题讨论】:

    标签: php mysql laravel eloquent


    【解决方案1】:

    确保您已正确提供所有内容;例如,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;
    }
    

    【讨论】:

    • 嘿!谢谢你的回答,问题正是你提到的,使用 $item->menuMenuCategories 而不是 $item->menuMenuCategories()!
    猜你喜欢
    • 1970-01-01
    • 2020-05-31
    • 1970-01-01
    • 1970-01-01
    • 2021-08-28
    • 1970-01-01
    • 2019-08-12
    • 2016-09-28
    • 1970-01-01
    相关资源
    最近更新 更多