无法从数据库中获取数据 - Laravel

时间:2018-05-03 10:05:09

标签: php database laravel migration

我有一个非常简单和简短的代码或多或少直接来自课程,但它不起作用。我之前没有人看到过错误,因为我找不到一个可以提到我确切错误的网页。

我只是想在Laravel控制器中从我的(sql)数据库中获取数据。控制器:

 <?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Joke as Joke;


class ContentsController extends Controller
{

public function __construct( Joke $joke )
{
    $this->joke = $joke;
}
//
public function index()
{
    $data = [];
    $data = ['jokes'] = $this->joke->all();


    return view('index', $data);
}
}

数据库迁移:    

use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;

class CreateJokesTable extends Migration
{
/**
 * Run the migrations.
 *
 * @return void
 */
public function up()
{
    Schema::create('jokes', function (Blueprint $table) {
        $table->increments('id');
        $table->string('joke');
        $table->integer('upvotes');
        $table->integer('downvotes');
        $table->integer('user_id')->unsigned();
        $table->foreign('user_id')->references('id')->on('users');
    });
}

/**
 * Reverse the migrations.
 *
 * @return void
 */
public function down()
{
    Schema::dropIfExists('jokes');
}
}

当我尝试运行它时,我收到此错误:“分配只能发生在可写值”并且它正好在线上 $data = ['jokes'] = $this->joke->all();

我完全迷失了。

1 个答案:

答案 0 :(得分:1)

您正在尝试将$this->jokes->all()的结果分配给['jokes'],而不是变量,以及$data,即:

$data = ['jokes'] = $this->joke->all();

你不能用PHP(或者我所知的任何编程语言)来做到这一点。这就像尝试做1 = 'this is not number 1';之类的事情一样。 PHP抱怨它。

我觉得你刚刚添加了一个额外的=,其中应该没有,你的代码应该是这样的:

$data['jokes'] = $this->joke->all();

这会将$this->joke->all()分配给具有键jokes的数组项,这可能是您想要的。