当前位置: 首页 > 知识库问答 >
问题:

Laravel 5.4外键关系在表中显示null

归和惬
2023-03-14

我试图在我的查询表中保存客户端和设备外键,但不知何故,它一直返回null(我的迁移为空)。我得到没有错误,如果我返回$客户端或$设备它返回一个正确的ID。

这就是控制器的样子:

# foreign key in this table rreturns null InquiryController
public function store(Request $request)
{
    $input = $request->all();

    $client = Client::find($request->input('client_id'));
    $device = Device::find($request->input('device_id'));
    $stream = new Stream;
    $stream->stream_name = $request->input('stream_name');
    $stream->save();

    $inquiry = new Inquiry;
    $inquiry->fill($data);
    $inquiry->client()->associate($client);
    $inquiry->device()->associate($device);
    $inquiry->stream()->associate($stream);
    $inquiry->save();
}

这是我的调查模型

class Inquiry extends Model
{
    protected $table    = 'inquiries';
    protected $fillable = ['user_id', 'client_id', 'device_id', 'stream_id'];

    # relations
    public function user()
    {
        return $this->belongsTo(User::class);
    }
    public function client()
    {
        return $this->belongsTo(Client::class);
    }
    public function device()
    {
        return $this->belongsTo(Device::class);
    }
    public function stream()
    {
        return $this->belongsTo(Stream::class);
    }
}

这是客户端和设备模型的关系函数:

public function inquiry()
{
    return $this->hasMany(Inquiry::class);
}

移民:

public function up()
{
    Schema::create('inquiries', function(Blueprint $table)
    {
        $table->increments('id');
        $table->unsignedInteger('client_id')->nullable();
        $table->unsignedInteger('device_id')->nullable();
        $table->timestamps();
        $table->foreign('client_id')->references('id')->on('clients')->onDelete('cascade');
        $table->foreign('device_id')->references('id')->on('devices')->onDelete('cascade');
    });
}

public function down()
{
    Schema::dropIfExists('inquiries');
}

共有1个答案

农存
2023-03-14

确保在迁移过程中为查询表定义了外键。

例如:

$table->integer('client_id')->unsigned();
$table->foreign('client_id')
  ->references('id')->on('clients')
  ->onDelete('cascade');

更新:

尝试在添加关系之前保存模型。将其交换到:

$inquiry = new Inquiry;
$inquiry->fill($data);
$inquiry->save();
$inquiry->client()->associate($client);
$inquiry->device()->associate($device);
$inquiry->stream()->associate($stream);
 类似资料:
  • 我试图在laravel中创建一个主键-外键关系,但我一直遇到这个错误 我似乎找不到哪里出错了,因为我在查看了SO上的其他答案后,对模式进行了更改。 当我运行时,上面的错误会弹出,这是一个部分迁移。 任何指向这将是真棒,因为我已经寻找了一段时间的解决方案! 谢谢 员工表 部门表 工资表 新增:DB播种机。 根据评论更改了DB种子程序

  • 我们系统的所有用户都来自一个主“用户”类。同样,我们希望以相同的方式构造数据库,拥有一个主“用户”表,该表与特定用户类型的必要表连接,以提供额外的用户信息。 以这三个基本表格为例: 表用户 user_id|user_email|user_firstname|user_lastname|... 表雇员 user_id|employee_staff_number|... 表管理 user_id|adm

  • 问题内容: 我知道你会说这个问题被问过很多次了,但是我还没有解决呢… models.py views.py 模板: 我已经尝试过上面的模板,但没有得到任何结果。所以我想在DocImage类中获取imageurl地址… 所有帮助 问题答案: 如果您查看外键文档,如果您有类似的关系 您需要像这样在DocImages类上定义外键: 如果您未设置相关名称,则可以像下面这样从Doc访问DocImage: 有

  • 问题内容: 对于SQL Server 2000_ 对于给定的表“ foo”,我需要一个查询来生成一组表,这些表具有指向foo的外键。 问题答案: SELECT o2.name FROM sysobjects o INNER JOIN sysforeignkeys fk on o.id = fk.rkeyid INNER JOIN sysobjects o2 on fk.fkeyid = o2.id

  • 问题内容: 我有一个用户表和一个朋友表。朋友表拥有两个外键,分别指向我的用户表和状态字段。我试图能够从Friend对象上的User表中调用属性。例如,我希望能够执行诸如friend.name或friend.email之类的操作。 当我得到对象时,我所拥有的只是2,并且我想显示每个用户的所有属性,以便可以在表单等中使用该信息。我对sqlalchemy还是陌生的- 仍在尝试学习更高级的功能。这只是一个

  • 我有一个奇怪的问题。 我有一个用户表和一个公司表。一个用户属于一家公司,而一家公司有许多用户。 表的两个主键都是id。 在laravel文档中,我阅读了以下内容: 此外,Eloquent假设外键的值应该与父项的id列匹配。 我在我的