【问题标题】:eloquent get all row of a table and edit a field雄辩的获取表格的所有行并编辑字段
【发布时间】:2018-12-11 22:04:13
【问题描述】:

我是 laravel 的新手,我正在尝试使用 Eloquent 编辑 MySQL 表的所有行的字段。

所以我创建了那个:

<?php

namespace App\Http\Controllers;
use App\Mining;
use DB;

class FrontendController extends Controller{
    public function cronDiff(){
        $basic = GeneralSettings::first();
        $row = Mining::all()->whereStatus(1)->get();
        foreach ($row as $coins){
            $code = Mining::where('coin_code', $coins->coin_code)->get();
            $risultato = difficolta($code);
            DB::table['minings']->insert('coin_code' => $code); 
        }
    }
}

我有一张像这样的minings 表:

id->int
name->varchar
coin_code->varchar
coin_diff->varchar
status->tinyint

但我无法使用$risultato 的值更新coin_diff(取自其他函数) 你能帮忙找出我错在哪里吗?

谢谢。

【问题讨论】:

    标签: laravel eloquent


    【解决方案1】:

    尝试使用-&gt;update('coin_code' =&gt; $code); 而不是-&gt;insert

    我认为这个解决方案会更好:

    $minings = DB::table('minings')->get();
    
    $minings->coin_code = $code;
    $minings->update();
    

    【讨论】:

    • 这里面有循环吗?
    • 试试这个而不是你的 DB::table['minings']->insert('coin_code' => $code);
    • 那行也没什么用。也许for循环是错误的?
    【解决方案2】:

    它应该像这样工作:Mining::update(['coin_code' =&gt; $code]) 如果你有条件,你可以在更新之前链接它们。

    另外,您需要在模型 $fillable 属性上有列。所以,我不知道你得到了什么错误,但它可能来自那个。

    【讨论】:

    • 嗨,谢谢,它也不适用于更新,而是插入可能错误在 $row = Mining::all()-&gt;whereStatus(1)-&gt;get(); 上?
    • 你确实有一个错误,Mining::all(),这意味着你从该表中获取所有行,然后应用另一种不起作用的方法,你需要摆脱 @987654324 @ 并且只留下 Mining::whereStatus(1)->get();
    • 你也应该发布错误,这样人们会更快地帮助你
    【解决方案3】:

    如果你想更新那你为什么要使用插入?!

    如果您想更新单行,请修改您的代码 DB::table['minings']->insert('coin_code' => $code); $coins->update(['coin_code' => $risultato]);

    并确保$risultato 具有字符串值

    【讨论】:

    • 好的,现在我知道了:` public function cronDiff(){ $basic = GeneralSettings::first(); $row = 挖矿::all()->get(); foreach ($row as $coins){ $code = Mining::where('coin_code', $coins->coin_code)->get(); $risultato = difficolta($code); $risultato2 = (string)$risultato; $coins->update(['coin_code' => $risultato]); } } ` 但它不再起作用,也许我在获取行时错了?在那一行:` $row = Mining::all()->get();` ?
    • 试试这个$row = Minig::where('status',1)-&gt;get() 而不是$row = Mining::all()-&gt;whereStatus(1)-&gt;get();
    猜你喜欢
    • 1970-01-01
    • 2019-05-04
    • 1970-01-01
    • 2014-03-26
    • 1970-01-01
    • 2021-07-06
    • 2020-03-10
    • 1970-01-01
    • 2017-11-09
    相关资源
    最近更新 更多