首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >使用枢轴模型找不到Laravel基表

使用枢轴模型找不到Laravel基表
EN

Stack Overflow用户
提问于 2014-03-14 18:13:42
回答 2查看 1.2K关注 0票数 1

嗨,我想查询我的任务表。关于这些表的一些背景信息以及它们之间的关系。

用户,创建项目和任务,可以从状态表中选择项目和任务的状态,用户做出自己的,我计划有默认的,但用户可能想要创建自己的。

默认情况下,我希望找到所有的用户任务,在这些任务中,status_name保存在statusesdoes not equal中。我决定最好实际上创建一个名为task_status的表,它既保存task_id,也保存status_id。我仍然希望找到已登录的用户任务,然后根据任务表中的status_id查找状态名称,这可以在statuses表中引用。然后,我只想显示不等于closed的任何记录,但是下面解释的第一部分比第一次预计的要复杂。

我的表结构如下:

表结构

用户

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
id | username | email

任务

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
id | user_id | client_id | project_id | status_id | task_name | task_brief

状态

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
id | status_name 

项目

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
id | user_id | client_id | status_id | type_id | project_name | project_brief 

task_status

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
id | user_id | task_id | status_id 

我试图先查询我的数据库,这样我就可以确保返回的数据是正确的。因此,我将查询更改为:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$user = User::with(array('tasks', 'task.status', 'tasks.taskstatus',
        'tasks.clients'))->find(Auth::user()->id);  

我试图按如下方式返回(请记住,我还想查询status表,以便能够返回状态的名称):

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
@foreach($user->tasks as $task) 
{{ $task->task_name }} 
    @if(!is_null($task->clients)) 
        {{ $task->clients->client_code }}
        @endif
        @if(!is_null($task->taskstatus)) 
            {{ $task->taskstatus->status_name }}
        @endif
@endforeach

我的模特:

Task.php

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public function status(){
    return $this->hasOne('Status', 'status_id');
} 

public function taskstatus() {
    return $this->hasMany('TaskStatus', 'status_id');
} 

Status.php

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public function tasks() 
{
    return $this->hasMany('Task');
}   

public function taskstatus()
    {
        return $this->hasMany('TaskStatus', 'status_id');
    }   

TaskStatus.php

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public function tasks() 
{
    return $this->hasMany('Task', 'task_id');
}   

public function status() {
    return $this->belongsTo('Status', 'status_id')
}

但是,使用上述方法将返回以下错误:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
SQLSTATE[42S02]: Base table or view not found: 1146 Table 
'imanage.task_statuses' doesn't exist (SQL: select * from `task_statuses` 
 where `task_statuses`.`status_id` in (?, ?, ?, ?, ?, ?, ?)) 
(Bindings: array ( 0 => 1, 1 => 2, 2 => 3, 3 => 4, 4 => 5, 5 => 6, 6 => 7, ))

我确信,我的关系被错误地定义了,但是我不知道如何纠正these.Can,任何人的帮助?

EN

回答 2

Stack Overflow用户

发布于 2014-03-14 21:31:26

您还可以尝试以下代码:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$user = User::whereHas('task.status', function($q)
            {
              $q->where('status', '!=', 'close');
            })
            ->with('task', 'task.clients')
            ->where('id', Auth::user()->id)
            ->first();

查看查询关系上雄辩的文档。

还请记住,不回显视图,而是return视图。

票数 0
EN

Stack Overflow用户

发布于 2014-03-15 15:44:34

这个错误似乎与这样一个事实有关: Laravel (实际上是雄辩的)是得到了错误的表名:下面是task_statuses而不是task_status。记住,雄辩者将尝试多元命名模型以获得表名。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
SQLSTATE[42S02]: Base table or view not found: 1146 Table 
'imanage.task_statuses' doesn't exist

因此,要么重命名您的表以符合Laravel预期,要么在您的模型中指定一个自定义表名

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
class TaskStatus extends Eloquent {

    protected $table = 'task_status';

    ...

此外,我不清楚您代码的这一部分:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Task.php

public function status(){
    return $this->hasOne('Status', 'status_id');
} 

public function taskstatus() {
    return $this->hasMany('TaskStatus', 'status_id');
} 

您的任务是否具有one状态,还是具有多个状态?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22418713

复制
相关文章
C#对字符串进行加密解密
明志德道
2023/10/21
3870
C#对字符串进行加密解密
如何使用Java进行加密和解密
在Java中,我们可以使用许多不同的加密和解密技术来保护数据。这些技术可以用于加密密码、保护敏感数据、网络通信等。下面将介绍Java中常用的加密和解密技术和实现方法。
用户1289394
2023/09/22
6690
如何使用Java进行加密和解密
使用PBE方式进行加密,解密
package com.demo.pbe; import java.security.Key; import java.security.NoSuchAlgorithmException; import java.security.SecureRandom; import javax.crypto.Cipher; import javax.crypto.NoSuchPaddingException; import javax.crypto.SecretKeyFactory; import javax.c
用户1215919
2018/02/09
2.7K0
PHP使用DES进行加密和解密
DES是一种标准的数据加密算法,关于这个算法的详细介绍可以参考wiki和百度百科:
大江小浪
2018/07/25
2K1
PHP使用DES进行加密和解密
DES是一种标准的数据加密算法,关于这个算法的详细介绍可以参考wiki和百度百科: wiki百科 百度百科 php中有一个扩展可以支持DES的加密算法,是:extension=php_mcrypt.dll 在配置文件中将这个扩展打开还不能够在windows环境下使用 需要将PHP文件夹下的 libmcrypt.dll 拷贝到系统的 system32 目录下,这是通过phpinfo可以查看到mcrypt表示这个模块可以正常试用了。  下面是PHP中使用DES加密解密的一个例子: 1 //$input - s
joshua317
2018/04/16
1.2K0
如何使用DotfuscatorPro_4.9对软件进行加密
DotfuscatorPro_4.9可以防止你的.NET软件被反编译,可以在一定程度上防止你的软件被反编译。现在很多软件都有被反编译的现象,虽然不能做到百分百的防范,但是你至少可以先做些技术上的处理,至少能挡住许多小白。
战神伽罗
2019/07/24
1.5K0
如何使用DotfuscatorPro_4.9对软件进行加密
使用hutool的非对称加密工具进行加密解密
RSA是最流行的非对称加密算法之一。也被称为公钥加密。它是由罗纳德·李维斯特(Ron Rivest)、阿迪·萨莫尔(Adi Shamir)和伦纳德·阿德曼(Leonard Adleman)在1977年一起提出的。当时他们三人都在麻省理工学院工作。RSA就是他们三人姓氏开头字母拼在一起组成的。
JQ实验室
2023/01/13
4.8K0
使用crypto.js进行信息加密解密
<script type="text/javascript" src="./crypto-js.js"></script> <script type="text/javascript"> var password = 'password' // 待加密字段 var secretKey = 'fizz' // key console.log(`待加密字段: ${password}`) var aestext = CryptoJS.AES.encrypt(password,secretKey) co
拿我格子衫来
2022/01/24
4.7K0
使用crypto.js进行信息加密解密
JAVA对字符串内容进行AES、DES加密解密
有时候java项目中需要对我们传输的内容进行加密,以确保数据的安全性,所以用到了其中的AES加密解密,不多说,直接上代码,看AES如何对字符串进行加密解密的:
一诺千金
2020/06/24
3.7K0
JAVA对字符串内容进行AES、DES加密解密
C语言如何实现DES加密与解密
在工作中遇到的Des解密问题,第三方发来的数据需要我们进行des解密,但是解密的结果前几位始终是乱码。废了半天劲,终于找到了问题所在。
芯动大师
2023/10/14
5392
C语言如何实现DES加密与解密
C# AES 加密 解密
// 输入代码内容 /// <summary> /// Aes加密解密 /// @author lishuai /// @date 20220527 13:01 /// </summary> public class AesUtil { /// <summary> /// AES加密 (128-ECB加密模式) /// </summary> /// <param name="toEncrypt
BrianLee
2022/05/27
2.8K0
C# AES 加密 解密
使用jmeter对字符串进行加密
这次仍然使用百度通用翻译接口当做案例,因为它刚好有一个参数就是经过md5加密得来的
冰霜
2022/03/19
1.3K0
使用jmeter对字符串进行加密
实用脚本!利用 Python 对 PDF 进行加密、解密操作,代码拿走就用!
本文将分享如何利用 Python 对 PDF 进行加密和解密操作,主要利用到之前多次介绍过的PyPDF2 模块。
崔庆才
2021/06/24
2.8K0
实用脚本!利用 Python 对 PDF 进行加密、解密操作,代码拿走就用!
nodejs使用aes-128-ecb加密如何在c#中解密
却发现C#端怎么也解密不了,一直报错,改了一整天,后来终于发现,nodejs端加密用的key其实在使用之前已经使用md5加密了一次,而这个操作是默认的,暂时没发现有配置可以默认去掉,服务端如果需要使用这个key解密,则需要也同样使用MD5加密
frontoldman
2019/09/03
2.6K0
【C 语言】文件操作 ( 读文本文件 | 文本加密解密 | fgets 函数 | fputs 函数 )
多行文本读取 : 通过 feop 函数判定是否读取到了文件结尾 , 如果已经读取到了文件结尾 , 则返回 true ;
韩曙亮
2023/03/29
1.4K0
【C 语言】文件操作 ( 读文本文件 | 文本加密解密 | fgets 函数 | fputs 函数 )
C#加密解密(AES)-AESHelper
using System; namespace Encrypt { public class AESHelper { /// <summary> /// 默认密钥-密钥的长度必须是32 /// </summary> private const string PublicKey = "1234567890123456"; /// <summary> /// 默认向量 /// </
KenTalk
2018/09/11
9.1K0
【C 语言】文件操作 ( 文件加密解密 | 解密文件 )
个文件 , 一个是原始文件 , 一个是加密后的文件 , 将原始文件进行加密 , 然后将加密后的数据输出到加密文件中 ;
韩曙亮
2023/03/30
9.5K0
[Spring Boot] 如何优雅的对配置文件进行加密
Jasypt Spring Boot为Spring Boot Applications中的属性源提供加密支持。 有三种方法可以集成jasypt-spring-boot到您的项目中:
架构探险之道
2019/08/06
8.3K0
使用luks2对ceph rbd进行加密
多个行业(例如金融行业)越来越需要在主机上使用租户/用户提供的加密密钥以卷粒度加密数据。这是由国家法规和对安全性的日益重视所推动的。迄今为止,Ceph RBD 不提供任何此类解决方案,现有的替代方案是在 libRBD 之前添加一个加密层。此类解决方案的示例是使用 QEMU LUKS 加密或依赖 DM-Crypt。但是,在与 RBD 层中实现的存储功能接口时,使用 RBD 之上的加密层有局限性。当我们进行镜像克隆时,只有在父子节点使用相同的加密密钥加密时才会起作用。通过将加密向下移动到 libRBD,就可以灵活地使用 Ceph RBD 克隆了。
没有故事的陈师傅
2022/09/15
9420
使用luks2对ceph rbd进行加密
点击加载更多

相似问题

如何利用Azure IoT集线器的功能应用?

15

使用Azure MQTT集线器作为IoT代理

12

为什么Azure IoT集线器有事件集线器作为端点?

15

Azure IoT集线器验证

121

Azure IoT集线器证书

24
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文