gpt4 book ai didi

php - Laravel 中的数据库关系

转载 作者:行者123 更新时间:2023-11-29 06:50:30 24 4
gpt4 key购买 nike

我的作者模型如下所示:

<?php
namespace App;
use Illuminate\Database\Eloquent\Model;

class Author extends Model {
public $timestamps = false;

public function role()
{
return $this->hasOne('App\Role');
}
}

角色模型看起来像:

<?php
namespace App;
use Illuminate\Database\Eloquent\Model;

class Role extends Model {
public $timestamps = false;
}

我的 AuthorController.php 看起来像:

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Author;

class AuthorController extends Controller
{
public function index(){
$role = Author::find(5)->role->pareigos;

return view('authors', ['role' => $role]);
}
}

但我收到如下错误:

"SQLSTATE[42S22]: Column not found: 1054 Unknown column 'roles.author_id' in 'where clause' (SQL: select * from roles where roles.author_id = 5 and roles.author_id is not null limit 1)

author_id 是从哪里来的?

我在数据库中有两个表,第一个是authors,其中包含 id、firstname、lastname、role_id。第二个是roles,有两行 - id 和 pareigos。所以我使用这个命令:

$role = Author::find(5)->role->pareigos;

通过 id (5) 查找作者,并在 roles 表中检查他的 role_id,如果 ID 匹配,则返回 pareigos

不知道我是否清楚地描述了问题 - 如果没有,请告诉我我将添加更多详细信息。

最佳答案

您的关系设置不正确。具有指向另一个表的键的表属于该另一个表。

class Author ... 
{
public function role()
{
return $this->belongsTo(Role::class);
}
...

这将需要在 authors 表中查找 role_id 键。默认情况下,除非您传递更多参数来覆盖它,否则 Laravel 使用调用函数名称来决定 belongsTo 关系的外键名称。 [方法名为role,因此它知道寻找role_id ... methodname + _id]

关于php - Laravel 中的数据库关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47703296/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com