所以,我正在尝试学习 laravel,但我有点陷入了一对多的关系。所以,我有一个带有 3 个链接的页面,并通过单击这些链接登录到数据库。一切都好,我点击链接,它在数据库中注册链接的 id,但是当我尝试在视图中打印它们时,我得到“试图获取非对象的属性”。
我的模型:
class NiceAction extends Model
{
public function logs(){
return $this->hasMany('App\NiceActionLog');
}
}
class NiceActionLog extends Model
{
public function log(){
return $this->belongsTo('App\NiceAction');
}
}
我的控制器:
这就是我单击时登录数据库的方式:
public function getNiceAction($action, $name = null){
if ($name == null) {
$name = 'you';
}
$nice_action = NiceAction::where('name', $action)->first();
$nice_action_log = new NiceActionLog();
$nice_action->logs()->save($nice_action_log);
return view('actions.nice', ['action' => $action, 'name' => $name]);
}
这就是我将日志传递给视图的方式:
public function getHome(){
$actions = NiceAction::all();
$logged_actions = NiceActionLog::all();
return view('home', ['actions' => $actions, 'logged_actions' => $logged_actions]);
}
在我看来,这是:
@foreach($logged_actions as $loggedAction)
<li>{{ $loggedAction->log->name}}</li>
@endforeach
后期编辑:
如果这可能是问题,我的表格看起来像这样:
nice_action_logs 表:
public function up()
{
Schema::create('nice_action_logs', function (Blueprint $table) {
$table->increments('id');
$table->timestamps();
$table->integer('nice_action_id');
});
}
nice_actions 表:
public function up()
{
Schema::create('nice_actions', function (Blueprint $table) {
$table->increments('id');
$table->timestamps();
$table->string('name');
$table->integer('niceness');
});
}