【问题标题】:Call to undefined method Illuminate\Database\Query\Builder::has_many()调用未定义的方法 Illuminate\Database\Query\Builder::has_many()
【发布时间】:2016-11-25 03:04:30
【问题描述】:

我想创建一个带有子菜单的动态菜单。 将是 Level1、Level2、Level3。

但我收到此错误: 调用未定义的方法 Illuminate\Database\Query\Builder::has_many() 和 调用未定义的方法 Illuminate\Database\Query\Builder::has_many() (查看: C:\xampp\htdocs****\resources\views\test.blade.php)

这是我目前所拥有的:

<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class WorkoutLevel1 extends Model
{
    protected $table ='workout_level1s';

    protected $fillable = ['title','icon','order_no'];

    public function workoutlvl2(){
         return $this->has_many('WorkoutLevel2');
      }
}`

`

<?php
namespace App; 
use Illuminate\Database\Eloquent\Model;
class WorkoutLevel2 extends Model
{
   protected $table = 'workout_level2s';

   public function workoutlvl1(){
         return $this->belongs_to('WorkoutLevel1');
      }

   public function workoutlvl3(){
        return $this->has_many('WorkoutLeve3');
   }   

   protected $fillable = ['title','order_no'];
}

`

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class WorkoutLevel3 extends Model
{
    protected $table = 'workout_level3s';

    public function workoutlvl2(){
         return $this->belongs_to('WorkoutLevel2');
      }

    protected $fillable = ['title','order_no'];
}

路线:

Route::get('/menu', function () {
    $lvl1s = App\WorkoutLevel1::all();

    return View::make('test',compact('lvl1s'));
});`

视图`

<div class="categories">
            <!-- // left menu.... -->
            <ul class="main">
                @foreach($lvl1s as $lvl1)
                    <li><a href="">{{$lvl1->title}}</a></li>
                    @foreach($lvl1->workoutlvl2->take(2) as $lvl2)
                        <li><a href="">{{$lvl2->title}}</a></li>
                    @endforeach
                @endforeach
            </ul>
    </div>

【问题讨论】:

    标签: php mysql laravel model phpmyadmin


    【解决方案1】:

    错误提示:

    调用未定义的方法 Illuminate\Database\Query\Builder::has_many()

    因此,将has_many 替换为hasMany(并将belongs_to 替换为belongsTo

    【讨论】:

    • 非常感谢!我没注意。 :-)
    【解决方案2】:

    如果您使用 Laravel 5,请使用 hasManybelongsTo 而不是 has_many。 你也可以查看 Laravel 文档。

    【讨论】:

      【解决方案3】:

      即使在 laravel 4.2 中也不是 has_many,正确的用法是 hasMany...

      【讨论】:

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