我的数据库中有一个带有两个主键(id和language_id)的表,需要将其放入模型中。模型中的默认primaryKey(Laravel
5中的Model.php)是id,我希望primaryKeys将是id和id_language。我尝试将其与数组或带’,’的字符串放在一起,但不起作用。它说我无法将数组转换为String。
请帮忙。
谢谢!
我写了这个简单的PHP特性,以使Eloquent能够处理复合键:
<?php
namespace App\Model\Traits; // *** Adjust this to match your model namespace! ***
use Illuminate\Database\Eloquent\Builder;
trait HasCompositePrimaryKey
{
/**
* Get the value indicating whether the IDs are incrementing.
*
* @return bool
*/
public function getIncrementing()
{
return false;
}
/**
* Set the keys for a save update query.
*
* @param \Illuminate\Database\Eloquent\Builder $query
* @return \Illuminate\Database\Eloquent\Builder
*/
protected function setKeysForSaveQuery(Builder $query)
{
foreach ($this->getKeyName() as $key) {
// UPDATE: Added isset() per devflow's comment.
if (isset($this->$key))
$query->where($key, '=', $this->$key);
else
throw new Exception(__METHOD__ . 'Missing part of the primary key: ' . $key);
}
return $query;
}
// UPDATE: From jessedp. See his edit, below.
/**
* Execute a query for a single record by ID.
*
* @param array $ids Array of keys, like [column => value].
* @param array $columns
* @return mixed|static
*/
public static function find($ids, $columns = ['*'])
{
$me = new self;
$query = $me->newQuery();
foreach ($me->getKeyName() as $key) {
$query->where($key, '=', $ids[$key]);
}
return $query->first($columns);
}
}
将其放置在Traits
主模型目录下的目录中,然后可以在任何复合键模型的顶部添加一个简单的单线:
class MyModel extends Eloquent {
use Traits\HasCompositePrimaryKey; // *** THIS!!! ***
/**
* The primary key of the table.
*
* @var string
*/
protected $primaryKey = array('key1', 'key2');
...
由jessedp补充:
在我想使用Model :: find之前,这对我一直很有效,因此以下是一些可以添加到上述hasCompositePrimaryKey特性中的代码(可能会更好):
protected static function find($id, $columns = ['*'])
{
$me = new self;
$query = $me->newQuery();
$i=0;
foreach ($me->getKeyName() as $key) {
$query->where($key, '=', $id[$i]);
$i++;
}
return $query->first($columns);
}
问题内容: 使用inspectdb,我可以从postgres到Django获取一个“间隔”字段。在Django中,它是一个TextField。我检索到的对象确实是一个timedelta对象! 现在,我想将此timedelta对象放入新模型中。最好的方法是什么?因为将timedelta放在TextField中会导致对象的str版本… 问题答案: 您可以以天或秒为单位将时间增量标准化为单个浮点数。 这
问题内容: 如何在div中加入div?我将显示更改为内联,但是浏览器将基本段落分为两个元素,而div将不是该段落的成员。 问题答案: 形成w3网站: P元素表示一个段落。它不能包含 块级元素(包括P本身)。
问题内容: 我在一个新的iOS Swift项目中使用Realm。我将Xcode 6.0.1与iOS SDK 8.0和Realm 0.85.0一起使用 我正在尝试使用新的Realm主键功能,以便可以进行操作。 这是一个示例模型: 以及我如何尝试添加/更新新对象: 我收到此错误: RLMExecption’,原因:“ Foo”没有主键,无法更新 这是主键上的文档。我可能没有正确设置它: http :
我在一个新的iOS Swift项目中使用Realm。我使用Xcode 6.0.1和iOS SDK 8.0和Realm0.85.0 我正在尝试使用新的Realm主键特性,以便可以执行。 下面是一个示例模型: 以下是主键上的文档。我可能没有正确设置: <罢工> http://realm.io/docs/cocoa/0.85.0/api/classes/rlmobject.html#//api/name
我正在学习如何在NodeJs中使用Sequelize来访问MySQL数据库,但是在创建模型的时候,我被外键问题困住了。有谁能建议我如何申请吗?因为我试过一个,但还是出错了。 模型 exam_category.js exam.js 然后在app.js中我写了这样一个: 这是我的database.js。 错误 PS D:PracticeOtpFrontend&>;node.server.js inte
我试图量化一个使用的模型。用替换是不可能的,因为它会严重影响网络性能,甚至毫无用处。 据我所知,在Pytorch中不支持量化。因此,我尝试手动重写这个模块,并使用以绕过此限制。 这就是我到目前为止提出的问题: 对于替换: 基本上,我读取了现有prelu模块的学习参数,并在一个新模块中自己运行计算。该模块似乎在某种意义上工作,它没有失败整个应用程序。 然而,为了评估我的实现是否真的正确并产生与原始模