我正在尝试使用 Laravel 和 Vue.js 制作一个聊天框。我正在关注这个在线教程。我几乎每一步都走到了发球台,我不知道为什么我没有得到想要的结果。这是我到目前为止所做的:
我创建了一个 User 模型和一个 Message 模型,其中包含正确的表列和迁移。在 User 模型中,我与 Message 模型建立了 hasMany 关系。在Message模型中,我与User建立了belongsTo关系。
当我进入修补程序时,我可以这样做:
factory(App\User::class)->create()
很好,就像教程中的人可以做的那样。但是,当我尝试这样做时:
App\User::find(4)->messages()->created(['message'=> "Hello from Sharon"])
我收到此错误:
BadMethodCallException with message 'Method Illuminate\Database\Query\Builder::messages does not exist.'
这是我的代码:
用户模型:
<?php
namespace App;
use Illuminate\Notifications\Notifiable;
use Illuminate\Foundation\Auth\User as Authenticatable;
class User extends Authenticatable
{
use Notifiable;
/**
* The attributes that are mass assignable.
*
* @var array
*/
protected $fillable = [
'name', 'email', 'password','api_token',
];
/**
* The attributes that should be hidden for arrays.
*
* @var array
*/
protected $hidden = [
'password', 'remember_token',
];
public function messages()
{
return $this->hasMany(Message::class);
}
}
消息模型:
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Message extends Model
{
protected $fillable = ['message'];
public function user()
{
return $this->belongsTo(User::class);
}
}
消息迁移:
<?php
use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;
class CreateMessagesTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('messages', function (Blueprint $table) {
$table->increments('id');
$table->timestamps();
$table->text('message');
$table->integer('user_id')->unsigned();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('messages');
}
}
如果你能让我知道我做错了什么,我将不胜感激。谢谢。