我有一个Eloquent模型,它有一个相关的模型:
public function option() {
return $this->hasOne('RepairOption', 'repair_item_id');
}
public function setOptionArrayAttribute($values)
{
$this->option->update($values);
}
Run Code Online (Sandbox Code Playgroud)
当我创建模型时,它不一定具有相关模型.当我更新它时,我可能会添加一个选项.
所以我需要检查相关模型是否存在,分别更新或创建它:
$model = RepairItem::find($id);
if (Input::has('option')) {
if (<related_model_exists>) {
$option = new RepairOption(Input::get('option'));
$option->repairItem()->associate($model);
$option->save();
$model->fill(Input::except('option');
} else {
$model->update(Input::all());
}
};
Run Code Online (Sandbox Code Playgroud)
<related_model_exists>我正在寻找的代码在哪里.
我想检索插入到我的表中的最后一个文件.我知道该方法first()存在并为您提供表中的第一个文件,但我不知道如何获取最后一个插入.
让我们说我们正在使用Laravel的查询构建器:
$users = DB::table('really_long_table_name')
->select('really_long_table_name.id')
->get();
Run Code Online (Sandbox Code Playgroud)
我正在寻找这个SQL的等价物:
really_long_table_name AS short_name
Run Code Online (Sandbox Code Playgroud)
当我必须输入大量的选择和数据时,这将特别有用(或者通常我也会在select的列别名中包含别名,并且它会在结果数组中使用).没有任何表别名,我会有更多的输入,一切都变得不那么可读.在laravel docs中找不到答案,有什么想法吗?
我在编写查询时遇到问题laravel eloquent ORM.
我的疑问是
SELECT book_name,dt_of_pub,pub_lang,no_page,book_price
FROM book_mast
WHERE book_price NOT IN (100,200);
Run Code Online (Sandbox Code Playgroud)
现在我想将此查询转换为laravel eloquent.
我的猜测是使用以下语法:
MyModel::all()->delete();
Run Code Online (Sandbox Code Playgroud)
但那没用.我确信它非常简单,但我已经搜索了关于这个主题的文档而无法找到它!
在阅读了T. Otwell关于Laravel优秀设计模式的书之后,在Laravel 4中创建应用程序时,我发现自己为应用程序中的每个表创建了存储库.
我最终得到了以下表格结构:
我有所有这些表的查找,创建,更新和删除方法的存储库类.每个存储库都有一个与数据库交互的Eloquent模型.根据Laravel的文档,模型中定义了关系:http://laravel.com/docs/eloquent#relationships .
在创建新课程时,我所做的就是在课程资源库中调用create方法.该课程有作业,因此在创建作业时,我还想在课程中为每个学生在乐谱表中创建一个条目.我是通过Assignment Repository完成的.这意味着赋值存储库使用Assignment和Student模型与两个Eloquent模型进行通信.
我的问题是:由于此应用程序的大小可能会增加并且会引入更多关系,因此在存储库中与不同的Eloquent模型进行通信是一种好的做法,还是应该使用其他存储库来完成(我的意思是从Assignment存储库调用其他存储库) )还是应该在Eloquent模型中一起完成?
此外,将分数表用作作业与学生之间的转轴还是应该在其他地方完成,这是一种好习惯吗?
我有以下查询:
$query = UserSubject::where('user_id', Auth::id())->select('subject_id')->get();
Run Code Online (Sandbox Code Playgroud)
正如预期的那样,我得到以下结果:
[{"user_id":8,"subject_id":9},{"user_id":8,"subject_id":2}]
Run Code Online (Sandbox Code Playgroud)
有没有办法将上面的结果复制到另一个表中,以便我的表看起来像这样?
ID|user_id|subject_id
1 |8 |9
2 |8 |2
Run Code Online (Sandbox Code Playgroud)
我$query遇到的问题是可以预期任意数量的行,因此我不确定如何遍历未知数量的行.
我在Eloquent中有2个连接表,即主题和用户.
主题模型:
public function user() {
return $this->belongs_to('User');
}
Run Code Online (Sandbox Code Playgroud)
用户模型:
public function themes() {
return $this->has_many('Theme');
}
Run Code Online (Sandbox Code Playgroud)
我的Eloquent api电话如下:
return Response::eloquent(Theme::with('user')->get());
Run Code Online (Sandbox Code Playgroud)
它返回主题中的所有列(没关系),以及来自用户的所有列(不是很好).我只需要用户模型中的"用户名"列,如何限制查询?
假设我在表中有7列,我想只选择其中两列,就像这样
SELECT `name`,`surname` FROM `table` WHERE `id` = '1';
Run Code Online (Sandbox Code Playgroud)
在laravel雄辩的模型中,它可能看起来像这样
Table::where('id', 1)->get();
Run Code Online (Sandbox Code Playgroud)
但我想这个表达式会选择id等于1的所有列,而我只想要两列(name,surname).如何只选择两列?
我一直在做一个购物车应用程序,现在我遇到了以下问题..
有一个User,一个Product和一个Cart对象.
- Cart表仅包含以下列:"id","user_id","product_id"和时间戳.
- UserModel"hasMany"购物车(因为用户可以存储多个产品).
- CartModel"belongsTo"用户和CartModel"hasMany"产品.
现在计算我可以调用的总产品:Auth::user()->cart()->count().
我的问题是:如何获得此用户购物车中产品的价格(产品列)的SUM()?
我想用Eloquent完成这个,而不是使用查询(主要是因为我相信它更清洁).