标签: eloquent

如何在Laravel中为:: create设置字段?

我使用此方法在DB中创建新行:

$input = $request->all();
return Recipient::create([$input]);
Run Code Online (Sandbox Code Playgroud)

如何$input使用值添加其他字段?

我试过了:

$input["user_id"] = Auth::id();
Run Code Online (Sandbox Code Playgroud)

但是当我显示查询INSERT时,我看不到字段 user_id

laravel eloquent laravel-5 laravel-5.2

0
推荐指数
1
解决办法
518
查看次数

Laravel 5与刀片中查询的模型关系

模式用户

ID|NAME
1 |John
2 |Doe
Run Code Online (Sandbox Code Playgroud)

架构财务

ID|USER_ID|PROFIT |DATE
1 |1      |1000   |2016-12-22
2 |2      |-2000  |2016-12-22
3 |1      |2000   |2016-12-24
4 |2      |-2000  |2016-12-24
Run Code Online (Sandbox Code Playgroud)

用户模型

class User extends Model
{
    public function Financial()
    {
        return $this->hasMany('App\Financial');
    }
}
Run Code Online (Sandbox Code Playgroud)

财务模型

class Financial extends Model
    {
        public function financial()
        {
            return $this->belongsTo('App\User');
        }
    }
Run Code Online (Sandbox Code Playgroud)

我的控制器

class MyController extends Controller
{
    public function index()
    {
        $user = User::get();
        $financial = Financial::get();
        return view('page.index',compact('user','financial'));
    }
}
Run Code Online (Sandbox Code Playgroud)

我的剑 …

php laravel eloquent laravel-5 laravel-blade

0
推荐指数
1
解决办法
2262
查看次数

Laravel 5.1:如何执行交易块?

我具有以下关系:一个学生与一个具有“一对一”的关系。一个人与Address具有“多对多”关系。

我要保留数据:首先创建人,在创建地址后,再创建学生。

但是,如果在任何这些表的持久化过程中发生任何错误,我都希望回滚转换。例如:如果我保存了“人”和“地址”,而“学生”失败了,我想回滚所有内容。

如何用口才来处理呢?

谢谢。

php laravel eloquent

0
推荐指数
1
解决办法
324
查看次数

通过其他关系,Laravel Eloquent sum的列

假设我有这些模块:

  • 优惠券
  • 订单(..,coupon_id)
  • 项目(...,order_id,价格)

还有那些关系:

  • Coupon 有很多 Order.
  • Order 有很多 Item.

到现在为止还挺好.

现在我想总结属于优惠券订单的商品的价格.所以我想做这样的事情:

Coupon::orders->items->sum('price');
Run Code Online (Sandbox Code Playgroud)

好吧,它不起作用,因为orders()方法返回一个Collection关系:

/**
 * @return \Illuminate\Database\Eloquent\Relations\HasMany
 */
public function orders()
{
    return $this->hasMany(Order::class);
}
Run Code Online (Sandbox Code Playgroud)

我收到的错误是item财产受到保护.我发现它与我的Item模块无关,只是因为Collectionprotected $items = [];.

所以,当我清理了一些事实,我的问题/问题是,我如何求和items->priceorders属于Coupon


当然,我可以像这样做一个foreach循环来实现我的目标:

$price = 0;

foreach (Coupon:orders as $order)
    $price += $order->items->sum('price');

return $price;
Run Code Online (Sandbox Code Playgroud)

但我正在寻找一个更清洁的解决方案.任何人?

php laravel eloquent laravel-collection

0
推荐指数
1
解决办法
3646
查看次数

Laravel计算主题

目前我正在发送给我的api:

return Forum::with('topics')
          ->paginate($pagination);
Run Code Online (Sandbox Code Playgroud)

所以一个论坛有很多主题.我如何计算所有主题并通过此json响应将其发回?

laravel eloquent

0
推荐指数
1
解决办法
96
查看次数

获取集合的最后一个元素

伙计们,我正在尝试从返回给我的数据中获取最后一个元素,但问题是它抛出了一个错误

Call to undefined method Illuminate\Database\Query\Builder::last()
Run Code Online (Sandbox Code Playgroud)

这是我的代码

$last_saved_snapshot = \EnginePerformanceTestSnapshot::where('engine_performance_test_id', $id)->last();
Run Code Online (Sandbox Code Playgroud)

请告诉我我做错了什么。谢谢

PS我正在使用Laravel 5.0

laravel eloquent laravel-5

0
推荐指数
3
解决办法
3207
查看次数

Laravel - 4位小数

我想在我的数据库中存储1个带有4位小数的数字.

如果我使用浮点数我只能添加2位小数

$table->float('sell');
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述


如果我尝试使用小数我会得到一个错误

$table->decimal('sell', 1, 4);
Run Code Online (Sandbox Code Playgroud)

第一个数字必须大于或等于第二个数字.

SQLSTATE[42000]: Syntax error or access violation: 1427 For float(M,D), double(M,D) or decimal(M,D), M must be >= D (column '  
Run Code Online (Sandbox Code Playgroud)

卖').(SQL:create table customers(idint unsigned not null auto_increment primary key,selldecimal(1,4)not null,
created_attimestamp null,updated_attimestamp null)default character set utf8 collat​​e utf8_unicode_ci)

有帮助吗?

谢谢

sql laravel eloquent laravel-5 laravel-5.2

0
推荐指数
2
解决办法
7224
查看次数

按照Laravel 5.3中两列的差异排序

我有一个雄辩的查询,其中orderBy之一是两列的差异.

$mymodel = Level::where([['ColA', 5], ['ColB', 10], ['ColC', 7]])
                 ->orderBy('ColA', 'Desc')
                 ->orderBy('ColA' - 'ColB', 'Desc')
                 ->orderBy('ColC', 'Desc')
                 ->orderBy('ColD', 'Asc')
                 ->pluck('userId')->toArray();
Run Code Online (Sandbox Code Playgroud)

使用sqlite的localhost上完全相同的代码可以正常运行而不会出错.但在使用MySQL进行生产时出现以下错误

SQLSTATE[42S22]: Column not found: 1054 Unknown column '0' in 'order clause' (SQL: select `userId` from `levels` where (`ColA` = 5 and `ColB` = 10 and `ColC` = 7) order by `ColA` desc, `0` desc, `ColC` desc, `ColD` asc)
Run Code Online (Sandbox Code Playgroud)

php laravel eloquent laravel-5 laravel-5.3

0
推荐指数
1
解决办法
1718
查看次数

获取关系= id的模型

是否想知道其他人如何实现以下目标?

表格:

teams 
teams_users (pivot many teams, many users)
users
Run Code Online (Sandbox Code Playgroud)

我正在努力实现的目标

$teams->user->where('user_id', $id)->get();
Run Code Online (Sandbox Code Playgroud)

但是我必须运行一个循环,并在团队模型上创建另一个方法来摘录(id,name)

// foreach ($teams as $team) {
//     # code...
//     dump($team->getUserIdsAttribute());
// }
Run Code Online (Sandbox Code Playgroud)

你知道更好的方法吗?

laravel eloquent laravel-5.3

0
推荐指数
1
解决办法
3267
查看次数

Laravel:使用find()更新多行

我有以下雄辩的代码:

$gifts = FriendGift::find($collectedGifts); // An array of IDS
Run Code Online (Sandbox Code Playgroud)

我想把所有人都设为collected = 1.

我试过这个:

$gifts->update(['collected' => 1]);
Run Code Online (Sandbox Code Playgroud)

但是我收到以下错误:

Method update does not exist
Run Code Online (Sandbox Code Playgroud)

怎么了?

laravel eloquent laravel-5

0
推荐指数
1
解决办法
549
查看次数