我有一个非常简单和简短的代码或多或少直接来自课程,但它不起作用。我之前没有人看到过错误,因为我找不到一个可以提到我确切错误的网页。
我只是想在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();
我完全迷失了。
答案 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
的数组项,这可能是您想要的。