【问题标题】:Many to many relations LARAVEL多对多关系 LARAVEL
【发布时间】:2020-01-03 09:19:29
【问题描述】:

我在从第三个表中检索数据时遇到问题,如您所见,我有三个表:

  1. 型号:ID、代码、标题
  2. 级别:ID、代码。标题
  3. models_level : model_id,level_id

我有作为功能:

 $model = model::paginate(10);
    $level = level::all();
    $models_level = models_level::all();
    return view('pg',compact('model','level','models_level'));

如何根据检索到的模型 ID 检索关卡名称?

这是我的刀

 <tbody>
            @foreach($model as $f)
                <tr class="item{{$f->id}}">
                    <td style="font-size: 13px;"> {{$f->title}}</td>
                    <td style="font-size: 13px;">{{$f->code}}</td>
                    <td style="font-size: 13px;">{{$f->models_level->level_id}}</td> 
                </tr>
            @endforeach
            {{ $filiere->links() }}

            </tbody>

我需要在级别而不是 ID 中显示标题。

在这种情况下,我有 2 个不同的表,第 3 个是关联的 包含两者的表,所以我必须通过模型来获取 模型级别。根据 model_id 和 go to 获取级别 id 水平并找到标题..

【问题讨论】:

标签: php laravel many-to-many php-7 laravel-6


【解决方案1】:
Models
– id

levels
– id

models_level
– product_id
– shop_id

这里 models_level 表称为数据透视表 app/Model.php

class Model extends Model
{

    public function levels()
    {
        return $this->belongsToMany('App\level','models_level');
    }
}

app/level.php

class Level extends Model
{

    public function Models()
    {
        return $this->belongsToMany('App\Shop','models_level');
    }
}

$model = model::with('levels')->paginate(10);
return view('pg',compact('model'));

<tbody>
            @foreach($model as $f)
                <tr class="item{{$f->id}}">
                    <td style="font-size: 13px;"> {{$f->title}}</td>
                    <td style="font-size: 13px;">{{$f->code}}</td>
                    <td style="font-size: 13px;">{{$f->levels[0]->id}}</td> 
                </tr>
            @endforeach
            {{ $filiere->links() }}

            </tbody>

你可以阅读更多关于many to many relationships in the docs.

【讨论】:

  • 感谢您的努力,在我的模型模型中,我有这样的 public function levels() { return $this->belongsToMany(\App\Models\level::class) ->withPivot ('mode_formation_id'); }
  • @MnlLBD 是的,它是数据透视表
【解决方案2】:

我假设您使用的是一对多关系,并且您的模型类中有正确的方法。

这样您可以将控制器方法更改为:

$model = model::with('level')->paginate(10);
return view('pq', $model);

在你的刀片文件循环中:

<td style="font-size: 13px;">{{$f->level->title}}</td>

你应该阅读 laravel 文档中的雄辩关系: https://laravel.com/docs/6.x/eloquent-relationships

【讨论】:

  • 我已经尝试过了,但它给了我一个错误,它们是 3 个表,而 model_level 是一个关联表
猜你喜欢
  • 2018-06-15
  • 2018-01-22
  • 2016-02-26
  • 2016-01-04
  • 2018-07-04
  • 1970-01-01
相关资源
最近更新 更多