标签: eloquent

Laravel检查是否存在相关模型

我有一个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>我正在寻找的代码在哪里.

php laravel eloquent laravel-4 laravel-5

128
推荐指数
5
解决办法
11万
查看次数

在表格中选择最后一行

我想检索插入到我的表中的最后一个文件.我知道该方法first()存在并为您提供表中的第一个文件,但我不知道如何获取最后一个插入.

laravel eloquent

126
推荐指数
10
解决办法
25万
查看次数

如何在Laravel Eloquent查询中(或使用查询生成器)对表进行别名?

让我们说我们正在使用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中找不到答案,有什么想法吗?

php laravel eloquent laravel-4

126
推荐指数
6
解决办法
15万
查看次数

Laravel Eloquent"在哪里"

我在编写查询时遇到问题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.

laravel eloquent laravel-4

125
推荐指数
5
解决办法
19万
查看次数

如何使用Eloquent删除表中的所有行?

我的猜测是使用以下语法:

MyModel::all()->delete();
Run Code Online (Sandbox Code Playgroud)

但那没用.我确信它非常简单,但我已经搜索了关于这个主题的文档而无法找到它!

laravel eloquent laravel-4

115
推荐指数
10
解决办法
14万
查看次数

管理Laravel中的关系,遵守存储库模式

在阅读了T. Otwell关于Laravel优秀设计模式的书之后,在Laravel 4中创建应用程序时,我发现自己为应用程序中的每个表创建了存储库.

我最终得到了以下表格结构:

  • 学生:身份证,姓名
  • 课程:id,name,teacher_id
  • 老师:id,姓名
  • 作业:id,name,course_id
  • 分数(充当学生和作业之间的枢轴):student_id,assignment_id,分数

我有所有这些表的查找,创建,更新和删除方法的存储库类.每个存储库都有一个与数据库交互的Eloquent模型.根据Laravel的文档,模型中定义了关系:http://laravel.com/docs/eloquent#relationships .

在创建新课程时,我所做的就是在课程资源库中调用create方法.该课程有作业,因此在创建作业时,我还想在课程中为每个学生在乐谱表中创建一个条目.我是通过Assignment Repository完成的.这意味着赋值存储库使用Assignment和Student模型与两个Eloquent模型进行通信.

我的问题是:由于此应用程序的大小可能会增加并且会引入更多关系,因此在存储库中与不同的Eloquent模型进行通信是一种好的做法,还是应该使用其他存储库来完成(我的意思是从Assignment存储库调用其他存储库) )还是应该在Eloquent模型中一起完成?

此外,将分数表用作作业与学生之间的转轴还是应该在其他地方完成,这是一种好习惯吗?

oop repository-pattern laravel eloquent laravel-4

114
推荐指数
4
解决办法
3万
查看次数

如何使用eloquent/fluent从单个查询中插入多行

我有以下查询:

  $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遇到的问题是可以预期任意数量的行,因此我不确定如何遍历未知数量的行.

php sql laravel eloquent

109
推荐指数
3
解决办法
14万
查看次数

Laravel Eloquent:如何仅从连接表中获取某些列

我在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)

它返回主题中的所有列(没关系),以及来自用户的所有列(不是很好).我只需要用户模型中的"用户名"列,如何限制查询?

php laravel eloquent

95
推荐指数
10
解决办法
18万
查看次数

如何在laravel雄辩中选择特定的列

假设我在表中有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).如何只选择两列?

orm laravel eloquent laravel-5

95
推荐指数
14
解决办法
23万
查看次数

Laravel Eloquent关系列的总和

我一直在做一个购物车应用程序,现在我遇到了以下问题..

有一个User,一个Product和一个Cart对象.
- Cart表仅包含以下列:"id","user_id","product_id"和时间戳.
- UserModel"hasMany"购物车(因为用户可以存储多个产品).
- CartModel"belongsTo"用户和CartModel"hasMany"产品.

现在计算我可以调用的总产品:Auth::user()->cart()->count().

我的问题是:如何获得此用户购物车中产品的价格(产品列)的SUM()?
我想用Eloquent完成这个,而不是使用查询(主要是因为我相信它更清洁).

php relation laravel eloquent

92
推荐指数
7
解决办法
18万
查看次数

标签 统计

eloquent ×10

laravel ×10

laravel-4 ×5

php ×5

laravel-5 ×2

oop ×1

orm ×1

relation ×1

repository-pattern ×1

sql ×1